基础知识
- 元组
在关系演算中一组域的笛卡尔积中的每一个元素叫做元组.如(李华,计算机专业,2006);这中间的李华、计算机专业、2006都是没有属性和取值范围的。而记录中的是有属性、取值范围等约束的。可以这样说:记录是特殊的元组。 - 聚合函数
SQL基本函数,聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。
错误实例
数据表结构:stu(name
,score
,id
)
目的:得到分数少于60分学,并超过2个以上的各组数据
SELECT
`name`,
score,COUNT(*) as cnt
FROM
stu
WHERE score<60
HAVING cnt>=1
最后得到的结果只有一行数据
解决方法
首先HAVING是聚合函数,在操作之前应该将元组进行分组,才可以得到每个不同的结果,WHERE函数只是操作表单元组数据,最后聚合得到结果只是一个元组数据,返回第一个数据,所以得到以上结果。
解决方法:
SELECT
`name`,
score,COUNT(*) as cnt
FROM
stu
WHERE score<60
GROUP BY `name`
HAVING cnt>=1
所以为了,进行分组,需要通过name进行分组聚合,然后使用having聚合函数,得到结果。
结论
在操作聚合函数之前需要将元组数据进行分组,然后再进行聚合,得出所要的结果。