4

在 Oracle SQL 中,如何在常规列旁边返回 count(*) 列?

什么有效:

select count(*) from TABLE where username = 'USERNAME';

我想做什么:

select username,count(*) from TABLE where username = 'USERNAME';

因此,我希望在计数旁边使用用户名,将其扩展为另一个查询,其中列出了许多用户名及其记录计数。

错误:

ORA-00937: not a single-group group function
00937. 00000 -  "not a single-group group function"
*Cause:    
*Action:
Error at Line: 7 Column: 7

问题:

那么,我该怎么做呢?

4

1 回答 1

12
SELECT username,count(*) from TABLE WHERE username='USERNAME' GROUP BY username

应该做的伎俩!

第一个查询有效的原因是因为 MySQL 可以自动将该查询转换为聚合查询,因为它“理解”您要计算 username='USERNAME' 的所有行。第二个查询不够清楚 - 您正在尝试对查询选择的行执行聚合函数,但您还需要查询的行。我的查询清楚地表明您只希望从集合中返回一个用户名,因此聚合不是问题。

于 2012-06-26T15:23:07.787 回答