mysql-常用函数(3)

use test;
-- 将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
select deptno, group_concat(ename) from emp group by deptno;
select deptno from emp group by deptno;
-- 练习:查询各部门的员工姓名
select deptno, group_concat(ename)  from emp group by deptno;
select deptno, group_concat(ename order by sal desc separator '/') from emp group by deptno;
select deptno from emp order by sal desc;

-- 判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
select ifnull(comm, 0) from emp;

-- if :如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。
select ename,sal,if(sal>=3000,'高',if(sal>=1500,'中','低')) 工资级别 from emp;

 select ename,sal,case 
 when sal>=3000 then '高' 
 when sal>=1500 then '中'
 else '低' 
 end 工资级别 
 from emp;

select *,avg(sal) over() 所有员工平均工资 from emp;

-- 练习:查询每位员工的实发工资(基本工资+提成):ename, sal, 实发工资
select ename,sal, sal +  ifnull(comm, 0) from emp;

-- 开窗函数
-- 聚合函数用于开窗函数
select *,avg(sal) over() 所有员工平均工资 from emp;

-- 查询各部门平均工资
select *,avg(sal) over(partition by deptno) from emp;

-- 查询部门平均工资
select *,avg(sal) over(partition by deptno order by hiredate) from emp;

-- 各部门按入职日期计算累计工资总和
select *, sum(sal) over(partition by deptno order by hiredate) sum_sal from emp;

-- 各部门按入职日期计算当前行的前一行和后一行的平均工资
select *,avg(sal) over(partition by deptno order by hiredate 
rows between 1 preceding and 1 following) 部门平均工资 from emp;

-- 序号函数
-- 所有员工按入职日期显示排名
select *,row_number() over(order by hiredate) from emp;

-- 各部门员工按照基本工资显示排名
select *,row_number() over (partition by deptno order by sal desc) from emp;

-- 各部门员工按照基本工资显示排名
select *,
		row_number() over(partition by deptno order by sal desc) 排名1,
        dense_rank() over(partition by deptno order by sal desc) 排名2,
        rank() over(partition by deptno order by sal desc) 排名3
from emp;

1,2,2,4,5,6.。。。。这是rank()的形式

1,2,2,3,4,5,。。。。这是dense_rank()的形式

1,2,3,4,5,6.。。。。。这是row_number()涵数形式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值