mariadb SQL 查询显示带有聚合值的汇总行

mariadb SQL query showing summary lines with aggregated values

我需要在 MariaDB 中编写一个 SQL 查询来打印一个在汇总行之间包含聚合值的报告。

例如EMP table 中的数据是:

EmpName    ROLE         SALARY
A          Manager      10000
B          operator      8000
C          operator      8500
D          GM           20000
E          Manager       9000

我需要这样的输出:

ROLE       EmpName    SALARY
Manager    A          10000
           E           9000
TOTAL                 19000
----------------------------
GM         D          20000
TOTAL                 20000 
----------------------------
operator   B           8000
           C           8500
TOTAL                 16500

非常感谢。

以下查询可以产生类似于您想要的输出:

SELECT IF(type = 1, ROLE, 'TOTAL'), SALARY
FROM (
   SELECT ROLE, SALARY, 1 AS type
   FROM mytable

   UNION ALL

   SELECT ROLE, SUM(SALARY) AS TotalSalary, 2 AS type
   FROM mytable
   GROUP BY ROLE) AS t
ORDER BY ROLE, type  

Demo here

尝试使用WITH ROLLUP修饰符,例如-

SELECT
  role, empname, SUM(salary)
FROM
  table1
GROUP BY
  role, empname WITH ROLLUP;

输出:

GM        D       20000
GM        (null)  20000
Manager   A       10000
Manager   E       9000
Manager   (null)  19000
operator  B       8000
operator  C       8500
operator  (null)  16500
(null)    (null)  55500

分组列的所有 NULL 值都是总值。最后一行是所有薪水的总价值。

GROUP BY WITH ROLLUP 修改器文档。