我们先来看一下这个代码:

SELECT *
FROM product
WHERE SUM(slae_price) > 1000
GROUP BY product_type;

这样子会报错:

SELECT *
FROM product
WHERE SUM(slae_price) > 1000
GROUP BY product_type
> 1111 - Invalid use of group function
> 时间: 0.001s

为什么呢?

我们先来看一下这句查询中的执行顺序:FROM -> WHERE -> GROUP BY -> SELECT

首先我们知道像SUM()、AVG()、MAX()等等的聚合函数,是对结果进行筛选的,在FROM之后,我们只得到product这张表,如果对这张表进行聚合筛选后,那么接下来的GROUP BY该怎么办呢?GROUP BY是对表进行分组的,但是你都已经WHERE筛选完了,还怎么分组,所以矛盾,所以不能在WHERE中使用聚合函数!

聚集函数也叫列函数,它们都是基于整列数据进行计算的,而where子句则是对数据行进行过滤的,在筛选过程中依赖“基于已经筛选完毕的数据得出的计算结果”是一种悖论,这是行不通的。更简单地说,因为聚集函数要对全列数据时行计算,因而使用它的前提是:结果集已经确定!

最新文章

  1. 由提交storm项目jar包引发对jar的原理的探索
  2. android Can't bind to local 86XX for debugger
  3. CoInitialize浅析二
  4. 高效使用git的一些命令
  5. Linux 中文乱码问题
  6. Delphi DecodeDate和EncodeDate 拆分和聚合时间函数的用法
  7. PS 颜色表大全-CMYK颜色表(2)
  8. tcxtreelist Properties的使用(TcxImageComboBoxProperties)
  9. java.util.regex.Pattern的应用
  10. VB.NET 内存指针和非托管内存的应用
  11. django开发简易博客(三)
  12. Tomcat 80 端口被占,解决方案
  13. PHP生成腾讯云COS请求签名
  14. linux学习笔记基础篇(一)
  15. RDIFramework.NET V3.3 Web版新增系统公告、系统新闻模块方便需要的客户
  16. Spring Cloud ----> 几个组件的总结
  17. Flink – CEP NFA
  18. Effective Java (6) - 消除过期的对象引用
  19. read by other session 等待事件。
  20. 着重基础之—构建工具—Maven的依赖管理

热门文章

  1. visual studio 2015 Opencv4.0.1配置
  2. 完全小白入门:python的下载和安装
  3. 「DevOps 转型与实践」沙龙回顾第一讲
  4. ACM蒟蒻的爪巴之路
  5. Azure Media Player Logo隐藏和 视频字幕样式
  6. java基础小程序—万年历
  7. Celery---一个懂得异步任务,延时任务,周期任务的芹菜
  8. Excel中外部数据链接无法删除的解决方法【转】
  9. html中object标签
  10. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)