我有以下sql语句:
SELECT MODEL, COLOR, SUM(SALES)
FROM SALES
WHERE MODEL='chevy'
GROUP BY MODEL;
当我运行此语句时,我收到一条错误消息,说“”sales.color“必须出现在GROUP BY子句中或用于聚合函数”
我不明白为什么COLOR必须出现在Group by中或用于聚合函数。
感谢。
答案 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;
答案 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