ORACLE/SQL用函數進行每年,每月,每周,每日的數據匯總


 

15/03/21  用函數進行每年,每月,每周,每日的數據匯總

假設一個銷售明細表 sale_detail 含有 國家(country),銷售時間(sale_time),銷售額(sale_money..等等

需要用到求和函數 SUM()和分組子句 GROUP BY   按國家和年份分組進行求和匯總(對每一個國家的每一年進行求和) 

有兩種語句形式:

每年匯總

1、表格形式例如:

國家

年份

銷售額

巴西

2014

500000000000

方式一:

SELECT  S.country  as 國家---as 可以省略

         to_char(S.sale_time,’YYYY’)  as 年份---to_char()字符格式化函數,將時間格式轉換為四位年份,‘YYYY’字符格式顯示

         SumS.sale_money) as 銷售額---對滿足國家年份條件的金額進行匯總

FROM   sale_detail  S ---數據源為 sale_detail  

WHERE  sale_time>=to_date(‘2014-01-01’,’YYYY-MM-DD’) ---to_date()時間格式化函數,講字符轉換為時間格式。用時間范圍的形式確定時間范圍為哪年。

  AND   sale_time<=to_date(‘2015-01-01,’YYYY-MM-DD’)

GROUP BY   S.country,sale_time--- WHERE查詢出的數據按國家,時間匯總

HAVING SumS.sale_money>10000000--   對分組查詢出來的結果進行處理,只選出大於10000000-的數據。

 

 

方式二:

SELECT  S.country  as 國家---as 可以省略

         to_char(S.sale_time,’YYYY’)  as 年份---to_char()字符格式化函數,將時間格式轉換為四位年份,‘YYYY’字符格式顯示

         SumS.sale_money) as 銷售額---對滿足國家年份條件的金額進行匯總

FROM   sale_detail  S ---數據源為 sale_detail  

WHERE  to_char(sale_time,’YYYY’)=’2014’--to_char()字符轉換格式化函數,將時間格式轉換為字符。查找出含有2014年的數據。

GROUP BY   S.country,sale_time--- WHERE查詢出的數據按國家,時間匯總

HAVING SumS.sale_money>10000000--   對分組查詢出來的結果進行處理,只選出大於10000000-的數據。

 

每月匯總

1、表格形式如下

國家

月份

銷售額

巴西

2014/05

6000000

 

SELECT  S.country  as 國家---as 可以省略

         to_char(S.sale_time,’YYYY/MM’)  as 年份---to_char()字符格式化函數,將時間格式轉換為四位年份,兩位月份,‘YYYY/MM’字符格式顯示

         SumS.sale_money) as 銷售額---對滿足國家年份條件的金額進行匯總

FROM   sale_detail  S ---數據源為 sale_detail  

WHERE  to_char(sale_time,’YYYY’)=’2014’--to_char()字符轉換格式化函數,將時間格式轉換為字符。查找出含有2014年的數據。

GROUP BY   S.country,sale_time--- WHERE查詢出的數據按國家,時間匯總

ORDER BY   S.sale_time

2、表格形式如下:

國家

年份

月份

銷售額

巴西

2014

1

600000

巴西

2015

2

600000

SELECT  S.country  as 國家---as 可以省略

         to_char(S.sale_time,’YYYY’)  as 年份

         to_char(S.sale_time,’MM’)  as 月份---to_char()字符格式化函數,將時間格式轉換為四位年份,兩位月份,‘MM’字符格式顯示

         SumS.sale_money) as 銷售額---對滿足國家年份條件的金額進行匯總

FROM   sale_detail  S ---數據源為 sale_detail  

WHERE  to_char(sale_time,’YYYY’)  in ’2014’,’2015’)--to_char()字符轉換格式化函數,將時間格式轉換為字符。查找出含有2014,2015年的數據。

GROUP BY   S.country,sale_time--- WHERE查詢出的數據按國家,時間匯總

ORDER BY   S.country,,S.sale_time


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM