1.结果集中的重复记录
查询员工表中有多少个记录
select job from t_emp,这种情况下存在重复记录,需要去重
2.去掉重复记录
select distinct 字段 from......
例如:select distinct job from t_emp
3.注意事项
使用distinct的select子句中只能查询一列数据,如果查询多列去重就会失效
select distinct job ,deptno from t_emp
不可以是select job ,distinct deptno from t_emp
聚合函数在数据的查询分析中,应用十分广泛。聚合函数可以对数据求和,求最大值和最小值,求平均值等
例如:求员工的平均月收入是多少?
select avg(sal+ifnull(comm,0)) from t_emp
sum函数是用于求和,只能用于数字类型,字符类型的统计结果为0,日期类型统计结果是毫秒数相加;数据表中的每一列都是不可分割的数据项,同一列中不能有多个值,也不能存在重复的属性。
select sum(ename) from t_emp-----字符串求和为0
select sum(hiredate) from t_emp---日期求和毫秒数相加
select sum(sal) from t_emp----数字求和
max函数用于获得非空值的最大值
select max(comm) from t_emp
需求1 :查询10和20部门中,月收入最高的员工?
select max(sal+ifnull(comm,0)) from t_emp where deptno in(10,20)
需求2 :查询员工名字最长的是几个字符?
select max(length(ename)) from t_emp
min函数用于获得非空值的最小值
select min(empno) from t_emp
select min(hiredate) from t_emp
avg函数用于非空值的平均值,非数字数据统计结果为0
select avg(sal+ifnull(comm,0)) from t_emp
select avg(ename) from t_emp-----字符串求和结果为0
count(*)用于获得包含空值的记录数
count(列名)用于获得包含非空值的记录数
select count(*)from t_emp
select count(comm) from t_emp---只统计非空的数据
查询10和20部门中,底薪超过2000元并且工龄超过15年的员工人数
select count(*) from t_emp where deptno in(10,20) and sal>=2000 and datediff(now(),hiredate)/365>=15