MySQL基础学习(六)——聚合函数

聚合函数:作用于一组数据,并对一组数据返回一个值。

1、聚合函数类型

(1)AVG(x)

SELECT AVG(salary)
FROM employees

(2)SUM(x)

SELECT SUM(salary)
FROM employees

(3)MAX(x)

SELECT MAX(salary)
FROM employees

(4)MIN(x)

SELECT MIN(salary)
FROM employees

(5)COUNT(x)

SELECT COUNT(salary)
FROM employees

计算表中的记录数有三种方法:

count(*)

count(1)

count(具体字段):不一定对

因为计算指定个数的字段时,是不计算null值

SELECT COUNT(commission_pct)
FROM employees

2、聚合函数的基本使用

(1)单列分组

可以使用GROUP BY子句将表中的数据分成若干组
SELECT column
FROM table
[ WHERE condition]
[ GROUP BY group_by_expression]
[ ORDER BY column];
SELECT department_id,avg(salary),sum(salary)
FROM employees
GROUP BY department_id

 此时就会以department_id进行分组。展示每个组的最大最小值

(2)多列分组

SELECT department_id,job_id,avg(salary)
FROM employees
GROUP BY department_id,job_id

 此时的记录数就和单列查到的不一样了

(3)WITH ROLLUP 关键字

       使用 WITH ROLLUP 关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。

SELECT department_id,avg(salary)
FROM employees
GROUP BY department_id with ROLLUP

注意:

当使用ROLLUP时,不能同时使用ORDER BY子句进行结果排序,即ROLLUPORDER BY是互相排斥的。

 3、HAVING的使用

过滤分组: HAVING 子句
1. 行已经被分组。
2. 使用了聚合函数。
3. 满足 HAVING 子句中条件的分组将被显示。
4. HAVING 不能单独使用,必须要跟 GROUP BY 一起使用。
SELECT department_id,max(salary)
FROM employees
GROUP BY department_id
HAVING max(salary)>20000

 

WHEREHAVING的对比 

# 这种方法比下面方法效率高
SELECT department_id,max(salary)
FROM employees
WHERE department_id in (10,20,30,40)
GROUP BY department_id
HAVING max(salary)>10000


SELECT department_id,max(salary)
FROM employees
GROUP BY department_id
HAVING max(salary)>10000 and department_id in (10,20,30,40)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值