第六章 聚合函数和分组查询


前言


提示:以下是本篇文章正文内容,下面案例可供参考

1.SUM函数

定义:返回选取的某列值的总和
语法:

    sum(参数) --参数为某一列的字段名

2.max函数

定义:MAX函数返回选取的某列的最大值。
语法:

    max(参数)--参数为某一列的字段名

3.min函数

定义:MIN函数返回选取的某列的最小值。
语法:

    min(参数)  --参数为某一列的字段名

4.avg函数

定义:AVG函数返回选取的某列的平均值。
语法:

    avg(参数)--参数为某一列的字段名

5.count函数

定义:COUNT函数返回选取的某列或记录的行数。

   ==写法一:==
   COUNT(*) --获取表行数。
   ==写法二:==
   COUNT(column) --获取表中column列不为空的行数。

6.分组 group by

GROUP BY的含义和作用:
其作用是通过一定的规则将一个数据集划分为若干个小的区域,然后针对若干个小区域进行统计汇总,常和聚合函数在一起去使用
语法:

      GROUP  BY  字段列  [HAVING <条件表达式>]

7.having

HAVING的含义和作用:

HAVING子句的作用是筛选满足条件的组,即在分组之后过滤数据。
使用 HAVING子句中的条件用于显示特定的组,条件中经常包含聚合函数。
HAVING子句在GROUP BY子句之后。

注意:

  • 当分组进行筛选的时候,用having,其他时候用where

  • having可以和where一起使用

  • 用having就一定要和group by 连用

  • 但是用group by 不一定有having(只是一个筛选条件的作用而已)

习题

---1.SUM、MAX和MIN聚合函数
 --从员工表中查询出每个月要给员工发多少工资
 select sum(salary) 总工资 from Employee
 --查询最高的工资
 select max(salary) 最高工资 from Employee
 --查询最低工资
 select min(salary) 最低工资 from Employee
 --查询云南保山员工的最高工资,最低工资
 select max(salary)最高工资,min(salary) 最低工资 from Employee where address='云南保山'
---2.	AVG和COUNT函数
 --查询整个公司的平均工资
 select AVG(salary) 整个公司的平均工资 from Employee
 --查询云南保山员工的平均工资
 select AVG(salary) 云南保山员工的平均工资 from Employee where address='云南保山'
 --查询部门经理的平均工资
 select AVG(salary) 部门经理的平均工资 from Employee where zhiwu='部门经理'
 --查询员工总数
 select count(*)员工总数 from Employee
 --查询工资大于10000的员工的人数
 select count(*) 工资大于10000的员工的人数 from Employee where salary>10000
 --查询云南保山的员工人数
 select count(*)员工总数 from Employee where address='云南保山'
 --查询员工人数,地址不为null的人数
 select count(*) 地址不为null的人数 from Employee where address != 'null'

---3.分组查询
 --根据地址分组,显示不同地区的员工数
 select address,count(*) 员工数 from Employee group by address
 --根据地址分组,显示不同地区的员工的 平均工资,最高工资,最低工资
 select address,avg(salary) 平均工资,max(salary) 最高工资,min(salary) 最低工资 from Employee group by address
 --显示不同地区的部门经理有多少人,根据人数排序
 select address,count(zhiwu) from Employee group by address order by count(zhiwu)
 --显示每个岗位的平均工资,最高工资,最低工资,根据平均工资排序
 select zhiwu 岗位,avg(salary) 平均工资,max(salary)最高工资,min(salary) 最低工资 from Employee group by zhiwu order by avg(salary)

---4.多字段分组和HAVING子句
 --根据地址和岗位分组,显示不同地区不同岗位的人数,和平均工资
 select address 地址,zhiwu 岗位,count(*) 员工数,avg(salary) 平均工资 from Employee group by address,zhiwu
 --根据地址分组,显示员工数大于1的地区和员工数
 select address 地区,count(*) 员工数 from Employee group by address having count(address)>1
 --根据地址分组,显示员工平均工资大于10000的地区和平均工资
 select address 地区,avg(salary) 平均工资 from Employee group by address having avg(salary)>10000
 --显示不同地区不同岗位的平均工资,最高工资,最低工资,要求显示平均工资大于10000的,然后按平均工资排序
 select address 地区,zhiwu 岗位,avg(salary) 平均工资,max(salary)最高工资,min(salary) 最低工资 
 from Employee group by address,zhiwu having avg(salary)>10000 order by avg(salary)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值