利用假设法,推翻select 不能使用聚合函数的猜想。发现聚合函数定义容易忽略的地方

一次简单的尝试

SELECT Price,Bedrooms,COUNT(*)
FROM student.house_price

报错
22:26:42 SELECT Price,Bedrooms,COUNT(*) FROM student.house_price GROUP BY avg(Price)>1200 LIMIT 0, 1000 Error Code: 1111. Invalid use of group function 0.015 sec
为什么会这样呢?
这是因为传递的是多列,因此需要group by 来进行分组,再由聚合函数来处理。
如果觉得抽象可以看下面的解释

创建一张表:篮球

利用假设法,推翻select 不能使用聚合函数的猜想。发现聚合函数定义容易忽略的地方_第1张图片
假设可以使用聚合

SELECT 姓名,身高,count(*FROM 篮球

聚合函数是对结果进行聚合操作的
按照,执行路线来说,
from→select→聚合函数

利用假设法,推翻select 不能使用聚合函数的猜想。发现聚合函数定义容易忽略的地方_第2张图片
对谁聚合?

所以:关于聚合函数的定义:将多行汇总成一行。
如果是多行,需要group by 来帮忙分组。

你可能感兴趣的:(聚合函数)