mysql - 将 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
。那么这是怎么发生的呢?为什么这个观察与书中给出的观点相矛盾?
解决方案
推荐阅读
- python - 在执行命令之前,Python 3 TKinter 窗口不会打开
- angular - AngularFireStorage 图片上传
- node.js - 在 NodeJs 中合并一个非常大的列表的最佳方法是什么?
- javascript - 在 map() 内的 React 中回调 setState
- swift - Swift 4:使用 URLSession 数据任务解析为泛型类型需要实现 Encodable
- java - JList 使用对象删除列表
- apache-camel - 如何为 Karaf 生成考虑到现有功能的 features.xml
- android - Android Studio 模拟器错误和问题
- javascript - Angular:根据不同类别显示
- amazon-web-services - 基于查询字符串的 Cloudfront 重定向行为