当前位置: 首页 > news >正文

MySQL入门篇-MySQL 行转列小结

备注:测试数据库版本为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_SALESMANFROM empGROUP 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) namesFROM EMP TWHERE T.DEPTNO = '20'GROUP BY T.DEPTNO;-- 指定根据ename字段排序,分隔符为'-'
SELECT T.DEPTNO, group_concat(t.ename order by ename SEPARATOR '-') namesFROM EMP TWHERE 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)

http://www.lryc.cn/news/5649.html

相关文章:

  • 项目管理常见的十大难题及其症状
  • 技术方案模板
  • MySQL中对于单表和多表的操作
  • MFI认证
  • Vue中mixins的使用
  • 【PyQt】PyQt学习(一)框架介绍+环境搭建
  • 浅谈前端设计模式:策略模式和状态模式的异同点
  • 线性杂双功能PEG试剂OPSS-PEG-Acid,OPSS-PEG-COOH,巯基吡啶聚乙二醇羧基
  • 开发微服务电商项目演示(四)
  • 【C语言学习笔记】:静态库
  • 社科院与杜兰大学中外合作办学金融管理硕士——30+的年龄在职读研有必要吗?
  • 2.13作业【设备树解析,按自己理解】
  • 《NFL星计划》:巴尔的摩乌鸦·橄榄1号位
  • Allegro如何设置自动保存和自动保存的时间操作指导
  • Kotlin实现简单音乐播放器
  • ShardingSphere-Proxy 数据库协议交互解读
  • 基于ubuntu20.4的wine的MDK5软件的安装
  • Jmeter之直连数据库框架搭建简介
  • 备战蓝桥杯【高精度乘法和高精度除法】
  • 火眼审阅 | 基于NLP和OCR识别技术赋能合同审阅
  • 关于在集合中对象比较属性值的问题
  • java微信小程序旅游管理系统
  • 2023年要跟踪的11个销售管理关键指标
  • MongoDB--》基本常用命令使用
  • js浮点数四则运算精度丢失以及toFixed()精度丢失解决方法
  • 高姿态下的面部表情识别系统
  • English Learning - Day59 作业打卡 2023.2.13 周一
  • 图机器学习
  • ArcGIS中ArcMap创建渔网Create Fishnet:生成指定大小的格网矢量文件
  • TensorRT中的自定义层