是否真的有必要在SQL标准中使用GROUP BY

Pei*_*ong 0 sql ansi-sql sql-standards

在写了几年SQL之后,我发现经常把我感兴趣的列放入其中SELECT然后再次指定它们很烦人GROUP BY.我不禁想,我们为什么要那样做?

用户必须具体说明要分组的列的原因是什么?我们不能让SQL引擎假设是否存在聚合函数SELECT,其余的非聚合列分组

当你有一个大的,这将是特别有帮助,更简洁CASE WHENSELECT.

Gur*_*ngh 5

因为它们可能并不总是完全匹配.

例如,如果我想查找每个类别的最大书籍数量,我可以这样做:

select max(cnt)
from (
    select count(*) as cnt
    from books
    group by category
    ) t;
Run Code Online (Sandbox Code Playgroud)

在某些DB(如Oracle)中,您甚至可以这样做:

select max(count(*))
from books
group by category;
Run Code Online (Sandbox Code Playgroud)

我真的不需要指定类别列,因为我不需要它.

一些数据库(如Postgres)支持在group by子句中使用别名.