前言
提示:以下是本篇文章正文内容,下面案例可供参考
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)