MySQL 计算简单的小计

心已赠人 2022-10-27 13:45 205阅读 0赞

备注:测试数据库版本为MySQL 8.0

如需要scott用户下建表及录入数据语句,可参考:
scott建表及录入数据sql脚本

一.需求

定义一个“简单小计”结果集,它包含一列的聚集值以及全表的总计值。

例如将表emp中各job的工资总和放入一个结果集,并且将表emp总所有工资的总和也加入其中。
按job的工资是小计,而表emp中的工资总和是总计。

这样的结果集应该如下:
±—————±————-+
| job | sal |
±—————±————-+
| ANALYST | 6000.00 |
| CLERK | 4150.00 |
| MANAGER | 8275.00 |
| PRESIDENT | 5000.00 |
| SALESMAN | 5600.00 |
| TOTAL | 29025.00 |
±—————±————-+

二.解决方案

group by子句的rollup拓展可以完美的解决这个问题。

  1. select coalesce(job,'TOTAL') job,
  2. sum(sal) sal
  3. from emp
  4. group by job with rollup;

测试记录:

  1. mysql> select coalesce(job,'TOTAL') job,
  2. -> sum(sal) sal
  3. -> from emp
  4. -> group by job with rollup;
  5. +-----------+----------+
  6. | job | sal |
  7. +-----------+----------+
  8. | ANALYST | 6000.00 |
  9. | CLERK | 4150.00 |
  10. | MANAGER | 8275.00 |
  11. | PRESIDENT | 5000.00 |
  12. | SALESMAN | 5600.00 |
  13. | TOTAL | 29025.00 |
  14. +-----------+----------+
  15. 6 rows in set, 1 warning (0.01 sec)

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读

    相关 CentOS7安装MySQL8.0

    之前讲配置文件和权限的时候有很多MySQL8的知识,有同志说安装不太一样,希望发个文,我这边简单演示一下 1.环境安装 下载MySQL提供的CentOS7的yum源

    相关 input标签

    在使用form提交表单的时候,后台得不到一个表单项的数据,很是纳闷,最后经过对比发现, 在提交表单的时候,<input id=" aa" name="bb" type="te

    相关 数据迁移

    方法一:手工数据迁移,使用到了sqlloader 1、使用日终系统按指定的SQL将数据卸数到指定位置,生成所需的.ok文件和.dat文件。其中.ok文件的内容为表名、行数、

    相关 es6

    es6常用特性 const, let定义 相比较于var,const,let的作用域为\{\}, var的作用域为function 函数入参可以设置默认值