明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

mysql數(shù)據(jù)分組:創(chuàng)建分組

[摘要]mysql數(shù)據(jù)分組SQL聚集函數(shù)可用來(lái)匯總數(shù)據(jù)。這使我們能夠?qū)π羞M(jìn)行計(jì)數(shù),計(jì)算和與平均數(shù),獲得最大和最小值而不用檢索所有數(shù)據(jù)。目前為止的所有計(jì)算都是在表的所有數(shù)據(jù)或匹配特定的where子句的數(shù)據(jù)上進(jìn)行的。提示一下,下面的例子返回供應(yīng)商1003提供的產(chǎn)品數(shù)目:輸入:select count(*) a...
mysql數(shù)據(jù)分組

SQL聚集函數(shù)可用來(lái)匯總數(shù)據(jù)。這使我們能夠?qū)π羞M(jìn)行計(jì)數(shù),計(jì)算和與平均數(shù),獲得最大和最小值而不用檢索所有數(shù)據(jù)。

目前為止的所有計(jì)算都是在表的所有數(shù)據(jù)或匹配特定的where子句的數(shù)據(jù)上進(jìn)行的。提示一下,下面的例子返回供應(yīng)商1003提供的產(chǎn)品數(shù)目:

輸入:

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

輸出:

QQ截圖20170509101229.png

但如果要返回每個(gè)供應(yīng)商提供的產(chǎn)品數(shù)目怎么辦?或者返回只提供單項(xiàng)產(chǎn)品的供應(yīng)商所提供的產(chǎn)品,或返回提供10個(gè)以上產(chǎn)品的供應(yīng)商怎么辦?

這就是分組顯身手的時(shí)候了。分組允許把數(shù)據(jù)分為多個(gè)邏輯,以便能對(duì)每個(gè)組進(jìn)行聚集計(jì)算。

mysql創(chuàng)建分組

分組是在select語(yǔ)句的group by子句中建立的。理解分組最好的辦法是看下面這個(gè)例子:

輸入:

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

輸出:

QQ截圖20170509101240.png

分析:上面的select語(yǔ)句指定了兩個(gè)列,vend_id包含產(chǎn)品供應(yīng)商的ID,num_prods為計(jì)算字段(用count(*)函數(shù)建立)。group by 子句知識(shí)MySQL按vend_id排序并分組數(shù)據(jù)。這導(dǎo)致對(duì)每個(gè)vend_id而不是整個(gè)表計(jì)算num_prods一次。從輸出中可以看到,供應(yīng)商1001有3個(gè)產(chǎn)品,供應(yīng)商1002有2個(gè)產(chǎn)品,供應(yīng)商1003有7個(gè)產(chǎn)品,而供應(yīng)商1005有2個(gè)產(chǎn)品。

因?yàn)槭褂昧薵roup by,就不必指定要計(jì)算和估值的每個(gè)組了。系統(tǒng)會(huì)自動(dòng)完成。group by子句提示MySQL分組數(shù)據(jù),然后對(duì)每個(gè)組而不是整個(gè)結(jié)果集進(jìn)行聚集。

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

1.group by子句可以包含任意數(shù)目的列。這使得能對(duì)分組進(jìn)行嵌套,為數(shù)據(jù)分組提供更細(xì)致的控制。

2.如果在group by子句中嵌套了分組,數(shù)據(jù)將在最后規(guī)定的分組上進(jìn)行匯總。換句話(huà)說(shuō),在建立分組時(shí),指定的所有列都一起計(jì)算(所以不能從個(gè)別的列取回?cái)?shù)據(jù))。

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

4.除聚集計(jì)算語(yǔ)句外,select語(yǔ)句中的每個(gè)列都必須在group by子句中給出。

5.如果分組列中具有NULL值,則NULL將作為一個(gè)分組返回。如果列中有多行NULL值,它們將分為一組。

6.group by子句必須出現(xiàn)在where子句之后,order by子句之前。

【相關(guān)推薦】

  1. mysql數(shù)據(jù)分組:過(guò)濾分組

  2. mysql數(shù)據(jù)分組和排序及SELECT子句順序

以上就是mysql數(shù)據(jù)分組:創(chuàng)建分組的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門(mén)到精通的SQL知識(shí)。