需求1
資料:
• 統計2023年期間每個季度的銷售訂單筆數、訂單總額
select case• 統計2023年期間每個月的銷售訂單筆數、訂單總額when month(createtime) between 1 and 3 then 『一季度』
when month(createtime) between 4 and 6 then 『二季度』
when month(createtime) between 7 and 9 then 『三季度』
when month(createtime) between 10 and 12 then 『四季度』 end,count(orderid),sum(totalmoney)
from itcast_orders where year(createtime)=2019 group by case
when month(createtime) between 1 and 3 then 『一季度』
when month(createtime) between 4 and 6 then 『二季度』
when month(createtime) between 7 and 9 then 『三季度』
when month(createtime) between 10 and 12 then 『四季度』 end;
結果:
select case when substr(createtime,6,2)=『01』 then 『1月』• 統計2023年期間每週一到週日的銷售訂單筆數、訂單總額when substr(createtime,6,2)=『02』 then 『2月』
when substr(createtime,6,2)=『03』 then 『3月』
when substr(createtime,6,2)=『04』 then 『4月』
when substr(createtime,6,2)=『05』 then 『5月』
when substr(createtime,6,2)=『06』 then 『6月』
when substr(createtime,6,2)=『07』 then 『7月』
when substr(createtime,6,2)=『08』 then 『8月』
when substr(createtime,6,2)=『09』 then 『9月』
when substr(createtime,6,2)=『10』 then 『10月』
when substr(createtime,6,2)=『11』 then 『11月』 else 『12』 end ,
count(orderid),sum(totalmoney) from itcast_orders
where createtime like 『%2019%』
group by
case when substr(createtime,6,2)=『01』 then 『1月』
when substr(createtime,6,2)=『02』 then 『2月』
when substr(createtime,6,2)=『03』 then 『3月』
when substr(createtime,6,2)=『04』 then 『4月』
when substr(createtime,6,2)=『05』 then 『5月』
when substr(createtime,6,2)=『06』 then 『6月』
when substr(createtime,6,2)=『07』 then 『7月』
when substr(createtime,6,2)=『08』 then 『8月』
when substr(createtime,6,2)=『09』 then 『9月』
when substr(createtime,6,2)=『10』 then 『10月』
when substr(createtime,6,2)=『11』 then 『11月』 else 『12』 end ;
結果:
// 2019-01-08 17:50:13
selectif( pmod(datediff(substr(createtime,1,10),『1920-01-01』) -3,7) =『0』, 7,pmod(datediff(substr(createtime,1,10),『1920-01-01』) -3,7)) as week,
count(distinct orderid),
sum(goodsprice*goodsnum)
from
itcast_order_goods
group by
if( pmod(datediff(substr(createtime,1,10),『1920-01-01』) -3,7) =『0』, 7,pmod(datediff(substr(createtime,1,10),『1920-01-01』) -3,7));
結果:
數倉sql小技巧(一)
ads層由於本身的資料很少,一天只有幾條或幾十條,並且資料匯出常常為全量匯出。所以沒有進行分割槽,也沒有才有壓縮和列式儲存。採用的資料裝載語句也是insert into,而不是insert override。但這樣就會帶來乙個在hdfs中非常嚴重的問題 小檔案過多。ads層每插入一條資料,就會生成乙...
數倉的分層
一 數倉為什麼要分層?1 分層解耦,可以讓開發思路更加清晰,複雜問題簡單化 出錯時,可以精確定位資料 2 節省重複開發 3 脫敏 二 數倉的分層 以5層數倉為例 ods層 原始資料層,原始資料原封不動的直接匯入!dwd層 基於ods層,將原始資料進行清洗,篩選後的資料,把其中的明細開啟 例如 啟動日...
數倉的分層
一 數倉為什麼要分層?1 分層解耦,可以讓開發思路更加清晰,複雜問題簡單化 出錯時,可以精確定位資料 2 節省重複開發 3 脫敏 二 數倉的分層 以5層數倉為例 ods層 原始資料層,原始資料原封不動的直接匯入!dwd層 基於ods層,將原始資料進行清洗,篩選後的資料,把其中的明細開啟 例如 啟動日...