13 分組數據:group by和having子句

分組:group by

把數據分爲多個邏輯組,以便對每個組進行聚集運算。

例:先按v_id排序並分組,然後計算每個供應商的產品數目
selete v_id,count(*) as num
from products
group by v_id;

group by使用規定:

  • group by子句可以包含任意數目的列——分組可以嵌套;
  • group by子句給出的列都必須是檢索列或有效的表達式,不能是聚集函數。(在selete中使用表達式,則在group by中使用相同的表達式,不能是別名);
  • 若分組列中有null值,則null將作爲一個分組返回;
  • group by必須在where之後,order by之前,即先限制檢索,再分組,再排序。

過濾分組:having

where和having的區別:

where過濾的是行,having過濾的是分組。
也可以這麼理解:where在分組前過濾,having在分組之後過濾。

例:
selete cust_id,count(*)as orders
from orders
group by cust_id
having count(*)>=2;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章