創建分組
分組是在select語句的group by字句中建立的。
舉例:select vend_id, count(*) as num_prods from products group by vend_id;
結果:
\1.PNG
在具體使用group by字句前,需要知道一些重要的規定。
- group by字句可以包含任意數目的列。這使得能對分組進行嵌套,為數據分組提供更精細化的控制。
- 如果在group by字句中嵌套了分組,數據將在最后規定的分組上進行匯總。
- group by字句中列出的每個列都必須是檢索列或有效的表達式(但不能是聚集函數)。如果在select中使用表達式,則必須在group by字句中指定相同的表達式。不能使用別名。
- 如果分組列中具有null值,則null將作為一個分組返回。
- group by字句必須出現在where字句之后,order by字句之前。
過濾分組
過濾分組使用having
having和where的差別:where在數據分組前進行過濾,having在數據分組后進行過濾。
舉例:select vend_id, count(*) as num_prods from products where prod_price >= 10 group by vend_id having count(*) >=2
說明:列出具有2個(含)以上、價格為10(含)以上產品的供應商
\2.PNG
select 字句順序
一下為select 語句中使用必須遵循的次序:
字句 說明 是否必須使用
select 要返回的列或表達式 是
from 從中檢索數據的表 僅在從表選擇數據時使用
where 行級過濾 否
group by 分組說明 僅在按組計算聚集是使用
having 組級過濾 否
order by 輸出排序順序 否
limit 要檢索的行數 否
參考書籍:
- MySQL必知必會