我使用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
我无法弄清楚我哪里出错了。请通过表达式使用正确的组来取消我。
答案 0 :(得分:2)
使用select fruit_code, fruit_name, yyyymm, SUM(amt) from fruits group by yyyymm;
,您正在使用SQL标准的MySQL增强功能。
你正在按yyyymm进行分组,你要求dbms给你:
你可能想要的是:
select fruit_code, fruit_name, yyyymm, SUM(amt)
from fruits
group by fruit_code, fruit_name, yyyymm;
答案 1 :(得分:0)
怎么样:
select distinct c.code,c.fname,b.* from
(
select yyyymm,sum(amt) from d3 group by yyyymm
)b,d3 c
where b.yyyymm=c.yyyymm
答案 2 :(得分:0)
尝试此查询,
select fruit_code, fruit_name, yyyymm, SUM(amt) amt
FROM fruits
GROUP BY yyyymm,fruit_code, fruit_name
适合我