我尝试从Oracle表格中的查询中检索一些结果。
目标是检索属于3个国家的所有竞争者赢得的奖金总额:
这是我目前的查询:
SELECT NATIONALITY, TOTALPRIZEMONEY
FROM COMPETITOR
WHERE NATIONALITY ='USA'
AND NATIONALITY = 'AUSTRALIA'
AND NATIONALITY = 'SINGAPORE'
GROUP BY NATIONALITY;
下面是我的表结构的截图:
我收到错误:
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
我可以在这个问题上请求帮助吗?谢谢
答案 0 :(得分:1)
GROUP BY
用于聚合查询。例如......
SELECT NATIONALITY, sum(TOTALPRIZEMONEY)
FROM COMPETITOR
WHERE NATIONALITY IN ('USA', 'AUSTRALIA', 'SINGAPORE')
GROUP BY NATIONALITY;
在您的查询中,您没有聚合任何内容,因此,没有理由GROUP BY
。
来自GROUP BY上的Oracle文档
GROUP BY子句是SelectExpression的一部分,它将结果分组为具有一列或多列匹配值的子集。在每个组中,没有两行具有相同的分组列值。对于分组目的,NULL被认为是等效的。
您通常将GROUP BY子句与聚合一起使用 表达
答案 1 :(得分:1)
正确的查询看起来更像是这样:
SELECT SUM(TOTALPRIZEMONEY)
FROM COMPETITOR
WHERE NATIONALITY IN ('USA', 'AUSTRALIA', 'SINGAPORE');
如果您希望按国籍划分结果,则只需GROUP BY
。