programing

집계된 값이 있는 요약 행을 표시하는 mariadb SQL 쿼리

bestcode 2022. 9. 28. 00:14
반응형

집계된 값이 있는 요약 행을 표시하는 mariadb SQL 쿼리

집계된 값이 포함된 요약 행 사이에 보고서를 인쇄하기 위해 MariaDB에 SQL 쿼리를 작성해야 합니다.

예: EMP 표의 데이터는 다음과 같다.

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  

데모는 이쪽

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 값은 총 값입니다.마지막 행은 모든 급여의 총액입니다.

그룹화 기준(롤업 수식자 문서 포함)

언급URL : https://stackoverflow.com/questions/43223171/mariadb-sql-query-showing-summary-lines-with-aggregated-values

반응형