当前位置:首页 > 资讯 > 正文

数据操作语言-----查询结果集去重

数据操作语言-----查询结果集去重

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

默认情况下汇总函数是对全表范围内的数据做统计。
GROUP BY子句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理。
数据库支持多列分组条件,执行的时候逐级分组。
查询每个部门里,每种职位的人员数量和平均底薪
查询语句中如果含有GROUP BY子句,那么SELECT子句中的内容就必须要遵守规定。
SELECT子句中可以包括聚合函数,或者GROUPBY子句的分组列,其余内容均不可以出现在SELECT子句中。
WITH ROLLUP配合分组函数进行再次汇总
GROUP_CONCAT函数可以把分组查询中的某个字段拼接成一个字符串。
查询每个部门内底薪超过2000元的人数和员工姓名
FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT

最新文章