SQL 计算小计和总计
时间:2022-07-22
本文章向大家介绍SQL 计算小计和总计,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我们要统计 emp 表中每个部门的工资及公司的总工资,该怎么写 SQL 呢?
emp 表的数据
有一个完美的解决方案是使用 GROUP BY
子句的 ROLLUP
扩展。ROLLUP
在分组统计的基础上,再对结果进行相同操作(SUM
、AVG
、COUNT
)的聚合。
在 MySQL
中,解决这个问题的 SQL 可以这么写:
SELECT IFNULL(deptno, 'TOTAL') AS deptno, SUM(sal) sal FROM emp GROUP BY deptno WITH ROLLUP ;
注意:
-
ORDER BY
不能在ROLLUP
中使用,两者为互斥关键字; - 如果分组的列包含
NULL
值,那么ROLLUP
的结果可能不正确,因为使用ROLLUP
进行分组统计时,NULL
具有特殊意义。因此在进行ROLLUP
操作前先将分组列中的NULL
值转换成一个不可能存在的值,或者没有特别含义的值。
对于不支持 ROLLUP
语法的数据库,可以使用 UNION/UNION ALL
实现相同的效果。
使用 UNION/UNION ALL
的解决方案:
SELECT deptno,SUM(sal) sal FROM emp GROUP BY deptno UNION ALL SELECT 'TOTAL' AS deptno,SUM(sal) AS sal FROM emp
如果我们想按照 deptno、job 以及 deptno/job 组合分别计算出工资合计值,又该怎么做呢?
要实现的效果如下图:
在 MySQL 上实现的思路:
- 按照各个组合条件分别计算出结果;
- 使用
UNION ALL
把 1 中统计出来的结果合并到一块。
SELECT deptno AS '部门编号',job '职位', '按部门和职位合计' AS '计算规则', SUM(sal) '工资合计' FROM emp GROUP BY deptno,jobUNION ALLSELECT deptno,NULL,'按部门合计',SUM(sal)FROM emp GROUP BY deptnoUNION ALLSELECT NULL,job,'按职位合计',SUM(sal)FROM emp GROUP BY jobUNION ALLSELECT NULL,NULL,'公司总计',SUM(sal)FROM emp
- DW Mobile Switcher:移动设备识别切换主题插件
- 揭秘技术大国以色列
- mix-blend-mode 混合模式 background-blend-mode 背景混合模式 isolation:isolate 隔离
- wp_nav_menu 函数经Walker_Nav_Menu 类自定义导航菜单HTML
- css3 RGBA 红色R+绿色G+蓝色B+Alpha通道
- css3 gradient 渐变
- TwentyTwenty:一个图片特效Jquery 插件
- 何为实在
- css3 动画应用 animations 和transtions transform在加上JavaScript 可以实现硬件加速动画。
- 善良比聪明更重要
- zepto 基础知识(6)
- 一行 Python 代码实现并行
- zepto 基础知识(5)
- 移动Web 开发中的 Off Canvas 导航
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- NullException、Token的作用、Mapstruct用法
- 1.String类型字符串拼接2.IDEA清除缓存、热部署3.File的用法 4.Dubbo查询服务状态
- 1.Dubbo 常见错误及解决方法
- SpringBoot学习一:创建工程、pom文件
- SpringBoot学习二:基础配置
- Spring Boot 学习三:静态资源、整合 Thymeleaf 页面模板、@RestControllerAdvice
- SpringBoot学习四:日志框架、SpringBoot自动化配置
- SpringBoot学习五:错误处理、跨域支持
- Spring Security安全
- SpringBoot定时任务
- MySQL优化以及索引的使用
- 前端表单提交String类型数据后端转日期数据
- Java - CentOS下JDK的安装与配置
- yum安装与配置 Tomcat
- org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, “xxxx“)] with root cause