我正在使用Mysql查询数据库。我有一个水果表,并且编写了查询以获取特定月份出售水果的AMT。我的查询如下
select fruit_code, fruit_name, yyyymm, amt from fruits;
并返回以下类型的结果集
fruit_code | fruit_name | yyyymm | amt
-----------------------------------------
A | Apple | 201401 | 100
A | Apple | 201402 | 150
A | Apple | 201403 | 200
A | Apple | 201403 | 170
但我想要的是,如果yyyymm相同,则应添加amt值。所以我在下面的查询中尝试了这个
select fruit_code, fruit_name, yyyymm, SUM(amt) from fruits group by yyyymm;
但这给了我
fruit_code | fruit_name | yyyymm | amt
----------------------------------------
A | Apple | 201401 | 570
此处,amt列中的所有值均已添加,仅返回一行。
我需要的是一个类似下面的结果集
fruit_code | fruit_name | yyyymm | amt
----------------------------------------
A | Apple | 201401 | 100
A | Apple | 201402 | 150
A | Apple | 201403 | 370
我不太清楚我要去哪里。请以正确的表达方式对我提出建议。
最佳答案
通过select fruit_code, fruit_name, yyyymm, SUM(amt) from fruits group by yyyymm;
,您正在使用MySQL对SQL Standard的增强。
您正在按yyyymm分组,并且正在要求dbms给您:
yyyymm
无论哪种水果,该yyyymm的所有amt之和
记录与yyyymm匹配的fruit_code之一
记录与yyyymm匹配的fruit_names之一
您可能想要的是:
select fruit_code, fruit_name, yyyymm, SUM(amt)
from fruits
group by fruit_code, fruit_name, yyyymm;
关于mysql - 无法通过表达式获得正确的分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22832518/