SQL的執(zhí)行順序
From -> join -> on -> where -> group by -> having -> select -> order by -> distinct -> order by -> limit
count():
count(*):所有行進行統(tǒng)計世蔗,包括NULL行
count(1):所有行進行統(tǒng)計史汗,包括NULL行
count(column):對column中非空進行統(tǒng)計
group by ():
select 查詢的列不是任意的宗挥,而是某個列或者某個列的聚合函數(shù)牲迫,因為每個單元格的數(shù)據(jù)是惟一的揍很,不能多個值
group by:可以用多個字段進行分組仰楚,意味著把多個字段看成一個整體抗蠢,按照這個整體進行分組
【拓展】
如果分析多個維度的分組結(jié)果時褒繁,兩種方案:
(1) 多個group by 的結(jié)果 用union all 合并在一起亦鳞;
(2)使用多維度聚合函數(shù);
多維度聚合函數(shù)有:
With Cube:任意維度聚合
grouping sets:任意維度聚合
With rollup:group by 最左側(cè)的維度為主層級聚合
語法:
GROUP BY a,b WITH CUBE
GROUP BY a,b GROUPING SETS (a,b)
GROUP BY a,b,c WITH ROLLUP
join:
分為inner join 棒坏、left join燕差、right join、full join
join:滿足條件的才會關(guān)聯(lián)坝冕,不符合條件就會過濾掉徒探;(常用)
left join:保證左邊的數(shù)據(jù)不丟失,右邊如果沒有數(shù)據(jù)喂窟,則為null刹帕;(常用)
right join:保證右邊的數(shù)據(jù)不丟失,左邊如果沒有數(shù)據(jù)谎替,則為null偷溺;
full join:保證兩邊的數(shù)據(jù)都不丟失;