无法通过表达式获取正确的组

时间:2014-04-03 08:54:02

标签: mysql sql database

我使用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

我无法弄清楚我哪里出错了。请通过表达式使用正确的组来取消我。

3 个答案:

答案 0 :(得分:2)

使用select fruit_code, fruit_name, yyyymm, SUM(amt) from fruits group by yyyymm;,您正在使用SQL标准的MySQL增强功能。

你正在按yyyymm进行分组,你要求dbms给你:

  • yyyymm
  • yyyymm的所有amt的总和,无论是什么水果
  • 其中一个记录与yyyymm匹配的fruit_codes
  • 记录与yyyymm匹配的fruit_names之一

你可能想要的是:

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

适合我