Pei*_*ong 0 sql ansi-sql sql-standards
在写了几年SQL之后,我发现经常把我感兴趣的列放入其中SELECT然后再次指定它们很烦人GROUP BY.我不禁想,我们为什么要那样做?
用户必须具体说明要分组的列的原因是什么?我们不能让SQL引擎假设是否存在聚合函数SELECT,其余的非聚合列分组?
当你有一个大的,这将是特别有帮助,更简洁CASE WHEN在SELECT.
因为它们可能并不总是完全匹配.
例如,如果我想查找每个类别的最大书籍数量,我可以这样做:
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子句中使用别名.