15/03/21 用函數進行每一年,每個月,每週,每日的數據彙總web
假設一個銷售明細表 sale_detail 含有 國家(country),銷售時間(sale_time),銷售額(sale_money)..等等函數
須要用到求和函數 SUM()和分組子句 GROUP BY 按國家和年份分組進行求和彙總(對每個國家的每年進行求和) 測試
有兩種語句形式:spa
每一年彙總get
1、表格形式例如:table
國家軟件 |
年份date |
銷售額im |
巴西數據 |
2014 |
500000000000 |
方式一:
SELECT S.country as 國家---as 能夠省略
to_char(S.sale_time,’YYYY’) as 年份---to_char()字符格式化函數,將時間格式轉換爲四位年份,‘YYYY’字符格式顯示
Sum(S.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 Sum(S.sale_money)>10000000-- 對分組查詢出來的結果進行處理,只選出大於10000000-的數據。
方式二:
SELECT S.country as 國家---as 能夠省略
to_char(S.sale_time,’YYYY’) as 年份---to_char()字符格式化函數,將時間格式轉換爲四位年份,‘YYYY’字符格式顯示
Sum(S.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 Sum(S.sale_money)>10000000-- 對分組查詢出來的結果進行處理,只選出大於10000000-的數據。
每個月彙總
一、表格形式以下
國家 |
月份 |
銷售額 |
巴西 |
2014/05 |
6000000 |
SELECT S.country as 國家---as 能夠省略
to_char(S.sale_time,’YYYY/MM’) as 年份---to_char()字符格式化函數,將時間格式轉換爲四位年份,兩位月份,‘YYYY/MM’字符格式顯示
Sum(S.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
二、表格形式以下:
國家 |
年份 |
月份 |
銷售額 |
巴西 |
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’字符格式顯示
Sum(S.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