首页 > 解决方案 > 将 GROUP BY 与聚合函数一起使用是否正确?

问题描述

我读到将聚合函数与GROUP BY子句一起使用是不正确的。以下是我在书中找到的一些观点。

在 SELECT 语句中使用 GROUP BY 子句时:

• SELECT 的列列表必须包含列名和聚合函数的组合。

• GROUP BY 子句的columnlist 必须包括在SELECT 的columnlist 中指定的所有非聚合函数列。如果需要,您还可以按 SELECT 的列列表中出现的任何聚合函数列进行分组。

• GROUP BY 子句columnlist 可以包括SELECT 语句的FROM 子句中表中的任何列,即使它们没有出现在SELECT 的columnlist 中。

但是,当我将该GROUP BY子句与聚合函数一起使用时(我使用了 MySQL),没有生成错误,并且我得到了预期的答案。为什么是这样?

作为示例,请参见以下代码:

SELECT MONTHS * SALARY FROM EMPLOYEE GROUP BY MONTHS * SALARY;

SELECT COUNT(*) FROM EMPLOYEE GROUP BY COUNT(*);

我没有产生错误。我发现书中给出的观点更合乎逻辑,因为在开始时,表格没有 column MONTHS * SALARY。那么这是怎么发生的呢?为什么这个观察与书中给出的观点相矛盾?

标签: mysqlgroup-byaggregate-functions

解决方案


推荐阅读