为什么我们在sql中使用group by

时间:2014-01-18 10:29:06

标签: sql group-by

当我们发出这样的SQL请求时:

SELECT attr1, attr2, AGGR(*)
  FROM SomeTable
 GROUP BY attr1, attr2

对于某些聚合函数,我们必须包含一个GROUP BY子句并在其中列出attr1和attr2。我的问题是:SQL DBMS为什么不自己做呢?

4 个答案:

答案 0 :(得分:2)

因为您可能希望按attr1attr2 attr3分组,即使您对实际attr3值不感兴趣本身。

换句话说,您可能需要按非aggegated列进行分组,但这只是至少。没有什么可以阻止您按查询中实际包含的列进行分组。

并且,由于查询评估程序不知道您想要什么(或者它希望您遵循相关标准),因此可能认为坚持您明确说明它更安全。

答案 1 :(得分:0)

你可以用GROUP BY完成,然后从整个表中得到平均值。 使用GROUP BY,您可以获得每个组的平均值。

答案 2 :(得分:0)

因为sql中有两个函数类型 - Single function&集团职能。如果要访问组数据,则必须调用“分组依据”功能类型。

例如,假设您有一个包含“deptno”列的任何组织的表。现在,如果你想计算每个部门的“没有员工”。然后通过deptno调用count(*).... group。 结果将显示每个组中的员工数量。

答案 3 :(得分:0)

GROUP BY语句与聚合函数结合使用,可以按一列或多列对结果集进行分组。