当我们发出这样的SQL请求时:
SELECT attr1, attr2, AGGR(*)
FROM SomeTable
GROUP BY attr1, attr2
对于某些聚合函数,我们必须包含一个GROUP BY子句并在其中列出attr1和attr2。我的问题是:SQL DBMS为什么不自己做呢?
答案 0 :(得分:2)
因为您可能希望按attr1
,attr2
和 attr3
分组,即使您对实际attr3
值不感兴趣本身。
换句话说,您可能需要按非aggegated列进行分组,但这只是至少。没有什么可以阻止您按查询中实际包含的列进行分组。
并且,由于查询评估程序不知道您想要什么(或者它希望您遵循相关标准),因此可能认为坚持您明确说明它更安全。
答案 1 :(得分:0)
你可以用GROUP BY
完成,然后从整个表中得到平均值。
使用GROUP BY
,您可以获得每个组的平均值。
答案 2 :(得分:0)
因为sql中有两个函数类型 - Single function&集团职能。如果要访问组数据,则必须调用“分组依据”功能类型。
例如,假设您有一个包含“deptno”列的任何组织的表。现在,如果你想计算每个部门的“没有员工”。然后通过deptno调用count(*).... group。 结果将显示每个组中的员工数量。
答案 3 :(得分:0)
GROUP BY语句与聚合函数结合使用,可以按一列或多列对结果集进行分组。