备注:测试数据库版本为MySQL 8.0
需求:求emp表各个岗位的工资之和,如无,用0代替
如需要scott用户下建表及录入数据语句,可参考:
scott建表及录入数据sql脚本
一.CASE语法
SELECT deptno,
ifnull(sum(case when job = 'MANAGER' then sal else 0 end),0) s_MANAGER,
ifnull(sum(case when job = 'ANALYST' then sal else 0 end),0) s_ANALYST,
ifnull(sum(case when job = 'CLERK' then sal else 0 end),0) s_CLERK,
ifnull(sum(case when job = 'PRESIDENT' then sal else 0 end),0) s_PRESIDENT,
ifnull(sum(case when job = 'SALESMAN' then sal else 0 end),0) s_SALESMAN
FROM emp
GROUP BY deptno;
复制
mysql> SELECT deptno,
-> ifnull(sum(case when job = 'MANAGER' then sal else 0 end),0) s_MANAGER,
-> ifnull(sum(case when job = 'ANALYST' then sal else 0 end),0) s_ANALYST,
-> ifnull(sum(case when job = 'CLERK' then sal else 0 end),0) s_CLERK,
-> ifnull(sum(case when job = 'PRESIDENT' then sal else 0 end),0) s_PRESIDENT,
-> ifnull(sum(case when job = 'SALESMAN' then sal else 0 end),0) s_SALESMAN
-> FROM emp
-> GROUP BY deptno;
+--------+-----------+-----------+---------+-------------+------------+
| deptno | s_MANAGER | s_ANALYST | s_CLERK | s_PRESIDENT | s_SALESMAN |
+--------+-----------+-----------+---------+-------------+------------+
| 10 | 2450.00 | 0.00 | 1300.00 | 5000.00 | 0.00 |
| 20 | 2975.00 | 6000.00 | 1900.00 | 0.00 | 0.00 |
| 30 | 2850.00 | 0.00 | 950.00 | 0.00 | 5600.00 |
+--------+-----------+-----------+---------+-------------+------------+
3 rows in set (0.00 sec)
复制
需求:部门编号为20的所有的员工信息,以行的形式显示
二.group_concat语法
group_concat语法:
GROUP_CONCAT([DISTINCT] expr [,expr …]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name …]]
[SEPARATOR str_val])
-- 默认分隔符是','
SELECT T.DEPTNO, group_concat(t.ename) names
FROM EMP T
WHERE T.DEPTNO = '20'
GROUP BY T.DEPTNO;
-- 指定根据ename字段排序,分隔符为'-'
SELECT T.DEPTNO, group_concat(t.ename order by ename SEPARATOR '-') names
FROM EMP T
WHERE T.DEPTNO = '20'
GROUP BY T.DEPTNO;
复制
mysql> -- 默认分隔符是','
mysql> SELECT T.DEPTNO, group_concat(t.ename) names
-> FROM EMP T
-> WHERE T.DEPTNO = '20'
-> GROUP BY T.DEPTNO;
+--------+------------------------------+
| DEPTNO | names |
+--------+------------------------------+
| 20 | SMITH,JONES,SCOTT,ADAMS,FORD |
+--------+------------------------------+
1 row in set (0.00 sec)
mysql>
mysql> -- 指定根据ename字段排序,分隔符为'-'
mysql> SELECT T.DEPTNO, group_concat(t.ename order by ename SEPARATOR '-') names
-> FROM EMP T
-> WHERE T.DEPTNO = '20'
-> GROUP BY T.DEPTNO;
+--------+------------------------------+
| DEPTNO | names |
+--------+------------------------------+
| 20 | ADAMS-FORD-JONES-SCOTT-SMITH |
+--------+------------------------------+
1 row in set (0.00 sec)
复制
最后修改时间:2020-05-25 14:18:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2983次阅读
2025-04-25 18:53:11
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1228次阅读
2025-04-27 16:53:22
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
853次阅读
2025-04-25 15:30:58
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
690次阅读
2025-04-30 15:24:06
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
580次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
496次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
472次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
466次阅读
2025-04-30 12:17:50
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
436次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
373次阅读
2025-04-15 14:48:05