SQL 分组使用案例
Posted ShenLiang2025
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 分组使用案例相关的知识,希望对你有一定的参考价值。
SQL的分组函数如何使用
问题描述
mysql如何查询某个字段平均数以下的数据?
先用where条件查询,显示出错,原因是where后不能用avg()
select unix,num from waterdata where num<avg(num);
然后用group by having来查询,虽然没报错,但根本没有数据出来。
select unix,num from waterdata group by num having num<avg(num);
此外,where后面不能用avg(),max()等函数,为什么可以用current_timestamp()这种函数呢?
解决方法
-- 1 查询emp里工资小于平均值的员工信息(整个结果集分组)
SELECT * FROM emp -- 平均工资为 2073.214286
WHERE SAL <(SELECT AVG(SAL) FROM emp)
-- 2 查询emp里工资小于部门平均值的员工信息(按照部门分组)
SELECT A.*,AVG_SAL FROM emp A
JOIN
(
SELECT deptno,AVG(SAL) AVG_SAL FROM emp
GROUP BY deptno
)B
ON A.deptno = B.deptno AND A.SAL < B.AVG_SAL
ORDER BY deptno
-- 3 问题分析
-- 3.1 分组字段和聚合字段不能用一个,不然达不到分组的目的。
-- 3.2 比如,下例的分组和聚合都是一个字段,效果等同于SAL <= SAL(即没分组)
SELECT * FROM emp
GROUP BY SAL
HAVING SAL <= AVG(SAL)
-- 3.3 current_timestamp是系统函数且不是聚合函数,所以可以接WHERE。
以上是关于SQL 分组使用案例的主要内容,如果未能解决你的问题,请参考以下文章