与Group的聚合

时间:2014-09-27 18:31:43

标签: sql

我有以下sql语句:

SELECT MODEL, COLOR, SUM(SALES)
FROM SALES
WHERE MODEL='chevy'
GROUP BY MODEL; 

当我运行此语句时,我收到一条错误消息,说“”sales.color“必须出现在GROUP BY子句中或用于聚合函数”

我不明白为什么COLOR必须出现在Group by中或用于聚合函数。

感谢。

4 个答案:

答案 0 :(得分:3)

颜色必须出现在组中,因为您正在进行聚合选择。基本上这里的问题是它不知道哪些行来总结销售额。您正在选择每个模型的销售总额和每个模型的颜色,因此如果您想知道每个模型的销售情况(无论颜色如何),或者要通过以下方式添加颜色,您需要从所选列中删除颜色;如果你想知道每种型号的每种颜色的销售情况。

在第一种情况下:

SELECT MODEL, SUM(SALES)
FROM SALES
WHERE MODEL='chevy'
GROUP BY MODEL; 

在第二种情况下:

SELECT MODEL, COLOR, SUM(SALES)
FROM SALES
WHERE MODEL='chevy'
GROUP BY MODEL,COLOR; 

答案 1 :(得分:2)

SELECT MODEL, COLOR, SUM(SALES)
FROM SALES
WHERE MODEL='chevy'
GROUP BY MODEL,COLOR; 

SQL Server: Difference between PARTITION BY and GROUP BY

答案 2 :(得分:1)

这是Groupby的规则:

  

规则1:如果select块确实具有GROUP BY子句,则为any   SELECT子句中指定的列规范必须是唯一的   作为聚合函数的参数或在列表中出现   GROUP BY子句中给出的列,或两者中的列。

此处还有更多内容:http://www.informit.com/articles/article.aspx?p=664143&seqNum=6

答案 3 :(得分:0)

使用:

GROUP BY MODEL,COLOR

由于您要求查询中的MODEL和COLOR字段并根据这两个字段在SALES上应用聚合,您必须使用这两个字段对聚合进行GROUP