sql - Oracle SQL 沿着常规列返回 count(*) 列?

标签 sql oracle count

在 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

题:

那么,我该怎么做呢?

最佳答案

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

应该做的伎俩!

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

关于sql - Oracle SQL 沿着常规列返回 count(*) 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11210621/

相关文章:

mysql - 如何获取mysql中同一张表的计数值为零?

Unix 控制台 : Count distinct exceptions (not known beforehand)

oracle - 从选择查询中删除重复的 ID

mysql - SQL - 根据两列计算不同的记录

sql - GROUP BY 外键和日期范围

sql - 如何插入具有关系的表?

c# - 为什么 cmd.executeNonQuery() 抛出 ManagedDataAccess.Client.OracleException?

oracle - 在 Oracle 中定义局部变量的最简单方法是什么?

xml - XPath 1.0:列出不同的值及其出现的次数

Mysql 查询列名包含空格