需要查询此逻辑

时间:2021-04-01 17:53:05

标签: mysql sql join group-by

表A看起来像

<头>
数字 数量 日期
100 122.3 30-JUN-21
100 152.3 31-DEC-21
100 122.3 20-JUN-21
100 122.3 30-JUN-22
122 132.3 30-JUN-21
122 142.3 31-DEC-21
142 132.3 20-JUN-21
142 152.3 30-JUN-22

查询的输出应该看起来像..

<头>
数字 数量 日期
100 244.6 20-JUN-21
122 132.3 30-JUN-21
142 132.3 20-JUN-21

议程是通过按数字取最小日期组来计算金额,如果同一最小月份中存在其他日期也必须包括在内。有人可以帮我查询吗?

select sum(amount),min(date) from A group by number;

1 个答案:

答案 0 :(得分:2)

编写一个子查询,获取每个数字的最小日期。然后将其与表格连接以获取同一月份的所有行和数字,并将金额相加。

SELECT t1.number, SUM(t1.amount) AS amount, t2.date
FROM A AS t1
JOIN (
    SELECT number, MIN(date) AS date
    FROM A
    GROUP BY number
) AS t2 ON t1.number = t2.number AND YEAR(t1.date) = YEAR(t2.date) AND MONTH(t1.date) = MONTH(t2.date)
GROUP BY t1.number

DEMO

相关问题