簡體   English   中英

案例陳述中的SUM函數

[英]SUM function in a case statement

以下查詢在具有2個字段的表上執行:BEGDATE和AMOUNT(均為varchar2)。 目的是顯示數據如下:

 Year  Semester Total
 2017   Sem1     545
 2017   Sem2     9877
 2020   Sem1     444

想法是根據年份和學期計算字段總數。 下面的查詢能夠返回以下內容:

 Year  Semester 
 2017   Sem1     
 2017   Sem2     
 2020   Sem1     

我應該在哪里使用SUM(TO_NUMBER(AMOUNT))來達到預期的效果?

 SELECT DISTINCT(SUBSTR (BEGDATE, 1, 4)) AS YEAR,
       CASE
          WHEN SUBSTR (BEGDATE, 5, 2) BETWEEN 1 AND 3
             THEN 'SEM1'
          WHEN SUBSTR (BEGDATE, 5, 2)  BETWEEN 4 AND 6
             THEN 'SEM2'
          WHEN SUBSTR (BEGDATE, 5, 2)  BETWEEN 7 AND 9
             THEN 'SEM3'
          ELSE 'SEM4'
       END SEMESTER
  FROM EMP 
  ORDER BY YEAR DESC,SEMESTER

只需在選擇列列表的末尾添加總和即可。

SELECT   SUBSTR (begdate, 1, 4) AS YEAR,
         CASE
            WHEN SUBSTR (begdate, 5, 2) BETWEEN 1 AND 3
               THEN 'SEM1'
            WHEN SUBSTR (begdate, 5, 2) BETWEEN 4 AND 6
               THEN 'SEM2'
            WHEN SUBSTR (begdate, 5, 2) BETWEEN 7 AND 9
               THEN 'SEM3'
            ELSE 'SEM4'
         END semester,
         SUM (TO_NUMBER (amount)) sum_val
    FROM emp
GROUP BY SUBSTR (begdate, 1, 4),
         CASE
            WHEN SUBSTR (begdate, 5, 2) BETWEEN 1 AND 3
               THEN 'SEM1'
            WHEN SUBSTR (begdate, 5, 2) BETWEEN 4 AND 6
               THEN 'SEM2'
            WHEN SUBSTR (begdate, 5, 2) BETWEEN 7 AND 9
               THEN 'SEM3'
            ELSE 'SEM4'
         END
ORDER BY YEAR DESC, semester;

而且,當您分組時,您不再需要與眾不同。

添加了SUM

SELECT A.YEAR,A.SEMESTER, SUM(TO_NUMBER(A.AMOUNT)) AS SUM_AMT
FROM
 (SELECT DISTINCT(SUBSTR (BEGDATE, 1, 4)) AS YEAR,
       CASE
          WHEN SUBSTR (BEGDATE, 5, 2) BETWEEN 1 AND 3
             THEN 'SEM1'
          WHEN SUBSTR (BEGDATE, 5, 2)  BETWEEN 4 AND 6
             THEN 'SEM2'
          WHEN SUBSTR (BEGDATE, 5, 2)  BETWEEN 7 AND 9
             THEN 'SEM3'
          ELSE 'SEM4'
       END SEMESTER,
AMOUNT
  FROM EMP 
  ORDER BY YEAR DESC,SEMESTER)A
GROUP BY YEAR,SEMESTER
ORDER BY YEAR DESC, SEMESTER;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM