Oracle Group By表达式无效

时间:2015-11-26 16:23:02

标签: sql oracle group-by

我尝试从Oracle表格中的查询中检索一些结果。

目标是检索属于3个国家的所有竞争者赢得的奖金总额:

这是我目前的查询:

SELECT NATIONALITY, TOTALPRIZEMONEY
FROM COMPETITOR
WHERE NATIONALITY ='USA'
AND NATIONALITY = 'AUSTRALIA'
AND NATIONALITY = 'SINGAPORE'
GROUP BY NATIONALITY;

下面是我的表结构的截图:

enter image description here

我收到错误:

ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"

我可以在这个问题上请求帮助吗?谢谢

2 个答案:

答案 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