首頁  >  文章  >  資料庫  >  mysql資料分組:建立分組

mysql資料分組:建立分組

巴扎黑
巴扎黑原創
2017-05-09 13:49:562256瀏覽

mysql資料分組

SQL聚集函數可用於匯總資料。這使我們能夠對行進行計數,計算和與平均數,獲得最大和最小值而不用檢索所有資料。

目前為止的所有計算都是在表的所有資料或符合特定的where子句的資料上進行的。提示一下,下面的範例傳回供應商1003提供的產品數目:

#
select count(*) as mun_prods from products where vend_id = 1003;

輸出:

mysql資料分組:建立分組

##但如果要傳回每個供應商提供的產品數目怎麼辦?或是返回只提供單項產品的供應商所提供的產品,或返回提供10個以上產品的供應商怎麼辦?

這就是分組顯身手的時候了。分組允許把資料分成多個邏輯,以便能對每個群組進行聚集計算。

mysql建立分組

分組是在select語句的group by子句中建立的。理解分組最好的方法是看下面這個例子:

輸入:

select vend_id,count(*) as num_prods from products group by vend_id;

輸出:

mysql資料分組:建立分組##分析:上面的select語句指定了兩個列,vend_id包含產品供應商的ID,num_prods為計算字段(用count(*)函數建立)。 group by 子句知識MySQL按vend_id排序並分組資料。這導致對每個vend_id而不是整個表計算num_prods一次。從產出可以看到,供應商1001有3個產品,供應商1002有2個產品,供應商1003有7個產品,而供應商1005有2個產品。

因為使用了group by,就不必指定要計算和估值的每個群組了。系統會自動完成。 group by子句提示MySQL分組數據,然後對每個群組而不是整個結果集進行聚集。

在使用group by子句之前,需要先知道一些重要的規定:

1.group by子句可以包含任意數目的欄位。這使得能對分組進行嵌套,為資料分組提供更細緻的控制。

2.如果在group by子句中嵌套了分組,資料將在最後規定的分組上進行匯總。換句話說,在建立分組時,指定的所有列都一起計算(所以不能從個別的列取回資料)。

3.group by子句中列出的每個列都必須是檢索列或有效的表達式(但不能是聚集函數)。如果在select中使用表達式,則必須在group by子句中指定相同的表達式。不能使用別名。

4.除聚集計算語句外,select語句中的每個欄位都必須在group by子句中給出。

5.如果分組列中具有NULL值,則NULL將會以分組方式傳回。如果列中有多行NULL值,它們將分成一組。

6.group by子句必須出現在where子句之後,order by子句之前。

【相關推薦】

  1. mysql資料分組:過濾分組

  2. ##mysql資料分組與排序及SELECT子句順序

  3. #

以上是mysql資料分組:建立分組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn