首先,我在Oracle数据库中执行了以下SQL语句:
select data,count(*) from table_a
数据库返回错误:ORA-00937:而不是单组群函数。这是好的,但后来,我修改了SQL如下:
select sum from (select data,count(*) as sum from table_a)
数据库执行成功,我不认为这是一个正确的方式。有谁知道这是否正确?
另外:伙计们,我只是想展示一下oracle数据库的问题,我知道什么是正确的,但我对第二个sql的结果感到困惑。
2条答案
按热度按时间9w11ddsr1#
使第一个查询正确/有效的两种方法是:
这将按每个
data
组聚合计数。如果你真的想让COUNT(*)
在select子句中单独存在,那么可以使用以下命令:这里我们只是计算整个表中所有记录的数量。在这里也选择
data
没有任何意义,因为不清楚您希望显示的data
值沿着整个表级计数。8yparm6h2#
如果你想得到每个唯一的
data
的计数,那么:或者如果你想计算所有的行:
如果你想得到所有的行和一个计数,那么使用一个分析函数而不是一个聚合函数:
第二个查询在语法上无效,因为内部查询没有GROUP BY子句。
fiddle