我想在sql中获取每个月的第一条和最后一条记录,但我的查询给出了下面的结果,这是我的查询
SELECT DISTINCT month, amount,
MIN(date) OVER (PARTITION BY month ORDER BY utility.month)
FROM
utility;
上述查询结果
月 | 金额 | 最小值(日期( | |
---|---|---|---|
2022年2月 | 200 | 2022-02-02 | |
2022年1月 | 1000 | 22022-01-01 | |
2022年1月 | 200 | 2022-01-01 | |
2022年3月 | 1000 | 22022-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
;
这将产生这样的结果:
月 | mindt | 金额maxdt金额 | ||
---|---|---|---|---|
2022年1月 | 2022-01-02 | 250 | 2022-01-29350 | |
2022年2月 | 2022-02-01 | |||
2022年3月 | 2022-03-03 | 500 | 2022:03-18 | 300 |
尝试将MIN
和MAX
与GROUP BY
同时使用。
请从W3Schools查看此信息。
MIN((函数返回所选列的最小值。
MAX((函数返回所选列的最大值。
尝试以下代码:SELECT DISTINCT month, amount, MIN(date), MAX(date) FROM utility GROUP BY month;