如何在mysql数据库中查找每个月的第一条和最后一条记录



我想在sql中获取每个月的第一条和最后一条记录,但我的查询给出了下面的结果,这是我的查询

SELECT DISTINCT month, amount, 
MIN(date) OVER (PARTITION BY month ORDER BY utility.month) 
FROM 
utility;

上述查询结果

金额最小值(日期(
2022年2月2002022-02-02
2022年1月100022022-01-01
2022年1月2002022-01-01
2022年3月100022022-02-06

您可以先获取MIN()MAX()的值,转换成子查询,然后加入utility表两次,以获得提取日期对应的金额,如下所示:

SELECT v.month,
v.mindt,
u1.amount,
v.maxdt,
u2.amount
FROM
(SELECT month, 
MIN(date) mindt, MAX(date) maxdt
FROM 
utility
GROUP BY month) v
JOIN utility u1 ON u1.date=v.mindt
JOIN utility u2 ON u2.date=v.maxdt
;

这将产生这样的结果:

金额maxdt2022-01-29
mindt金额
2022年1月2022-01-02250350
2022年2月2022-02-01
2022年3月2022-03-035002022:03-18300

尝试将MINMAXGROUP BY同时使用。

请从W3Schools查看此信息。

MIN((函数返回所选列的最小值。

MAX((函数返回所选列的最大值。

尝试以下代码:SELECT DISTINCT month, amount, MIN(date), MAX(date) FROM utility GROUP BY month;

最新更新