SQL匯總統(tǒng)計(jì)與GROUP BY過(guò)濾查詢(xún)實(shí)現(xiàn)
1、匯總統(tǒng)計(jì)
介紹幾個(gè)聚集函數(shù)
有多少名學(xué)生
SELECT COUNT(*) FROM student;
SELECT COUNT(1) FROM student;
SELECT COUNT(score) FROM student;
所有學(xué)生的成績(jī)總和
SELECT SUM(score) FROM student;
所有學(xué)生成績(jī)的最高分
SELECT MAX(score) FROM student;
所有學(xué)生成績(jī)最低分
SELECT MIN(score) FROM student;
所有學(xué)生成績(jī)平均分
SELECT AVG(score) FROM student;
2、GROUT BY
如何獲取每個(gè)班級(jí)的數(shù)學(xué)成績(jī)平均分(因?yàn)閷W(xué)生太多,這里先不計(jì)算
成績(jī)?cè)?0分以下的學(xué)生),以便比較不同班級(jí)的成績(jī)?
SELECT class_id, AVG(score) FROM student WHERE score > 80 GROUP BY class_id
匯總原理如下:
如何統(tǒng)計(jì)不同的交易所的總的買(mǎi)入金額?
SELECT LEFT(stock_code,2), SUM(price * volume) FROM t_stock_trans_dtl WHERE opt_typ = '買(mǎi)入' GROUP BY LEFT(stock_code,2)
如何統(tǒng)計(jì)不同的交易所的不同交易類(lèi)型的總的交易金額?
SELECT LEFT(stock_code,2), opt_typ, SUM(price * volume) FROM t_stock_trans_dtl GROUP BY LEFT(stock_code,2), opt_typ
SELECT里除了使用聚集函數(shù)返回的字段外,其他所有的字段都必須原樣出現(xiàn)在GROUP BY的 后面;
GROUP BY會(huì)將NULL值的行,分到同一組計(jì)算統(tǒng)計(jì)值:
SELECT teacher_id, COUNT(*) FROM student GROUP BY teacher_id
3、如何對(duì)分組統(tǒng)計(jì)的結(jié)果進(jìn)行過(guò)濾
GROUP BY + HAVING
如何獲取教授15名以上學(xué)名的老師?
使用關(guān)鍵字:GROUP BY + HAVING
SELECT teacher_id, COUNT(*) FROM student GROUP BY teacher_id HAVING COUNT(*) > 15
如何獲取數(shù)學(xué)成績(jī)平均分在70分及以上的班級(jí)?
SELECT class_id, AVG(score) FROM student GROUP BY class_id HAVING AVG(score) > 70;
如何獲取每個(gè)班級(jí)的成績(jī)平均分(不計(jì)算成績(jī)?cè)?0分以下的學(xué)
生且過(guò)濾掉平均分在90分以下的班級(jí)),以便比較不同班級(jí)的成績(jī)?
SELECT class_id, AVG(score) FROM student WHERE score > 80 GROUP BY class_id HAVING AVG(score) > 90;
4、如何對(duì)分組統(tǒng)計(jì)的結(jié)果進(jìn)行排序
GROUP BY + ORDER BY
如何獲取每個(gè)班級(jí)的數(shù)學(xué)成績(jī)平均分(不計(jì)算成績(jī)?cè)?0分以下的學(xué)
生),然后以平均分從高到低排序?
SELECT class_id, AVG(score) FROM student WHERE score > 80 GROUP BY class_id ORDER BY AVG(score) DESC
5、介紹SELECT語(yǔ)句中各個(gè)子句的書(shū)寫(xiě)順序
如何獲取每個(gè)班級(jí)的數(shù)學(xué)成績(jī)平均分(不計(jì)算成績(jī)?cè)?0分以下的學(xué)
生且過(guò)濾掉平均分在90分以下的班級(jí)),然后以平均分從高到低排序?
SELECT class_id, AVG(score) FROM student WHERE score > 80 GROUP BY class_id HAVING AVG(score) > 90 ORDER BY AVG(score) DESC
6、上方用到的表
學(xué)生表
交易表
到此這篇關(guān)于SQL匯總統(tǒng)計(jì)與GROUP BY過(guò)濾查詢(xún)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SQL GROUP BY內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn)
這篇文章主要介紹了MySQL高并發(fā)生成唯一訂單號(hào)的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02mysql中order by與group by的區(qū)別
以下是對(duì)mysql中order by與group by的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-07-07mysql數(shù)據(jù)庫(kù)decimal類(lèi)型與decimal長(zhǎng)度用法詳解
在MySQL中decimal是一種用于存儲(chǔ)精確數(shù)字的數(shù)據(jù)類(lèi)型,下面這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫(kù)decimal類(lèi)型與decimal長(zhǎng)度用法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01MYSQL索引建立需要注意以下幾點(diǎn)細(xì)節(jié)
建立MYSQL索引時(shí)需要注意以下幾點(diǎn):建立索引的時(shí)機(jī)/對(duì)于like/對(duì)于有多個(gè)條件的/開(kāi)啟索引緩存/建立索引是有代價(jià)的等等,感興趣的你可以參考下本文,或許可以幫助到你2013-03-03mysql多條數(shù)據(jù)合并成一條的3種常見(jiàn)方法
在實(shí)際的應(yīng)用開(kāi)發(fā)中,有時(shí)我們需要將多條數(shù)據(jù)合并成一條數(shù)據(jù),以便更好地進(jìn)行數(shù)據(jù)分析和處理,本文就來(lái)介紹一下mysql多條數(shù)據(jù)合并成一條的方法,具有一定的參考價(jià)值2023-10-10