五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

SQL 聚合、分組和排序

發(fā)布日期:2021-12-11 17:40 | 文章來源:腳本之家

一、聚合查詢

在訪問數(shù)據(jù)庫時,經(jīng)常要對表中的某列數(shù)據(jù)進行統(tǒng)計匯總,如求和、最大值、最小值、平均值等,這時就需要使用聚合函數(shù),所謂聚合函數(shù),就是用于匯總的函數(shù),聚合就是將多行匯總為一行,

常見的聚合函數(shù)如下:

1、COUNT 函數(shù)

count函數(shù)用于統(tǒng)計表中記錄行數(shù)。

例如,計算全部數(shù)據(jù)的行數(shù):

SELECT COUNT(*) FROM users;

注意: COUNT(*)會得到包含空值NULL的數(shù)據(jù)行數(shù),若想排除包含NULL的數(shù)據(jù)行,可以使用count(字段名),會得到NULL之外的數(shù)據(jù)行數(shù)。

SELECT COUNT(user_name) FROM users;

2、SUM 函數(shù)

用于計算任意列中數(shù)據(jù)的和。

例如,計算所有用戶的年齡之和:

SELECT sum(age) FROM users;

3、AVG 函數(shù)

用于計算任意列中數(shù)據(jù)的平均值。

例如,計算所有用戶的年齡平均值:

SELECT AVG(age) FROM users;

4、MAX 函數(shù)和 MIN 函數(shù)

MAX函數(shù)用于計算任意列中數(shù)據(jù)的最大值,MIN函數(shù)用于計算任意列中數(shù)據(jù)的最小值。

例如,計算所有用戶中的年齡的最大值和最小值:

SELECT MAX(age),MIN(age) FROM users;

注意: MAX函數(shù)和MIN函數(shù)幾乎適用于所有數(shù)據(jù)類型的列,SUM函數(shù)和AVG函數(shù)只適用于數(shù)值類型的列。

二、分組查詢

聚合函數(shù)是對表中所有數(shù)據(jù)進行統(tǒng)計匯總,還可以使用GROUP BY子句先把數(shù)據(jù)分成若干組,再進行統(tǒng)計匯總。

語法格式:

SELECT <字段名>,... FROM <表名> GROUP BY <字段名>,...;

例如,按照用戶所在城市進行分組統(tǒng)計每個城市用戶的和:

SELECT city,count(*) FROM users GROUP BY city;
+-------+----------+
| city  | count(*) |
+-------+----------+
| 北京  |       60 |
| 上海  |       45 |
| NULL  |       80 |
| 濟南  |       12 |
+-------+----------+

通過結(jié)果可以看出,字段為NULL的也會被列為一個分組。如果想要排除在外,可以使用WHERE子句。

SELECT city,count(*) FROM users WHERE city IS NOT NULL GROUP BY city;

三、對聚合結(jié)果進行過濾

當我們使用GROUP BY子句分組的時候,有時候就需要對分組的聚合結(jié)果進行過濾,我們可能首先會想到使用WHERE子句,其實并不是,而是用HAVING子句,HAVING的作用和WHERE一樣,都是起到過濾的作用,只不過WHERE是用于數(shù)據(jù)行的過濾,而HAVING則用于分組聚合結(jié)果的過濾。

例如,按照用戶的所在城市進行分組,并且篩選分組中用戶數(shù)量大于40的組:

SELECT city,COUNT(*) AS num FROM users GROUP BY city HAVING num>40;

再比如:按照用戶的所在城市進行分組,并且篩選分組中用戶平均年齡小于25的組。

SELECT city,AVG(age) AS avg_age FROM users GROUP BY city HAVING avg_age<25;

1、HAVING 子句的構(gòu)成要素

HAVING子句中能夠使用的3種要素:

  • 常數(shù)
  • 聚合函數(shù)
  • GROUP BY子句中指定的列名(即聚合鍵)

四、對查詢結(jié)果進行排序

SQL查詢中可以用到排序,對數(shù)據(jù)進行升序(ASC)或降序排列(DESC),默認是升序。

語法格式:

SELECT <字段名>,... FROM <表名> ORDER BY <字段名> ASC/DESC,...;

例如:對users表中的記錄按照年齡升序排列:

SELECT * FROM users ORDER BY age ASC;

注意: 升序ASC可以省去不寫,但是降序DESC必須要寫。

例如,對users表中的記錄按照年齡降序排列:

SELECT * FROM users ORDER BY age DESC;

1、 指定多個排序鍵

ORDER BY子句中可以指定多個排序鍵,例如,對users表中的記錄按照年齡降序、注冊時間升序排列:

SELECT * FROM student ORDER BY age DESC,register_time ASC;

多個字段排序時中間用“,”隔開。

2、 使用聚合函數(shù)排序

ORDER BY子句中還可以使用聚合函數(shù)的結(jié)果進行排序。

例如,按照用戶的所在城市進行分組,并且按照分組的用戶數(shù)量進行排序:

SELECT city,COUNT(*) AS num FROM users GROUP BY city ORDER BY num;

到此這篇關于SQL 聚合、分組和排序的文章就介紹到這了,更多相關SQL 聚合、分組和排序內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!

版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部