本節(jié)將簡單介紹 sql 的聚集函數(shù)以及如何利用它們匯總表的數(shù)據(jù)
聚集函數(shù)
運行在行組上,計算和返回單個值的函數(shù)
sql 聚集函數(shù)
函數(shù) | 說明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行數(shù) |
MAX() | 返回某列的最大數(shù) |
MIN() | 返回某列的最小數(shù) |
SUM() | 返回某列值的和 |
AVG() 函數(shù)
AVG()可用來返回所有列的平均值,也可以用來返回特定列或行的平均值
select avg(score) as score_avg
from sc;
此查詢語句返回了 score_avg,包含了 sc
表中所有 score
字段的平均值,輸出為:
+-----------+
| score_avg |
+-----------+
| 70.77778 |
+-----------+
AVG()
也可用來確定特定行或列的平均值,如:
select sid, avg(score) as score_avg
from sc
where sid = 3;
此查詢語句返回了 sid = 3
的所有行的平均值,輸出為:
+------+-----------+
| sid | score_avg |
+------+-----------+
| 03 | 80.00000 |
+------+-----------+
AVG()
只能用來確定特定數(shù)值列的平均值,而且列名必須作為函數(shù)參數(shù)給出。為了獲得多個列的平均值,必須使用多個 AVG()
函數(shù)
AVG()
函數(shù)忽略列值為 NULL 的行
COUNT() 函數(shù)
可利用 COUNT() 確定表中行的數(shù)目或符合特定條件的行的數(shù)目
使用 COUNT(*)
對表中行的數(shù)目進行計數(shù),不管表列中包含的是空值( NULL)還是非空值:
select count(sid) as 'stu_count'
from student;
此查詢語句返回了學生的總?cè)藬?shù),輸出為:
+-----------+
| stu_count |
+-----------+
| 12 |
+-----------+
使用 COUNT(column)
對特定列中具有值的行進行計數(shù),忽略 NULL 值:
select count(pay_time) as 'pay_count'
from order_info_utf;
此查詢語句返回了 pay_time
字段值不為 null 的行數(shù),輸出為:
+----------------+
| pay_count |
+----------------+
| 461805 |
+----------------+
MAX() 函數(shù)
MAX() 要求指定列名
select max(score) as score_max
from sc;
此查詢語句返回了 sc
表中 score
字段最大的值,輸出為:
+-----------+
| score_max |
+-----------+
| 99.0 |
+-----------+
MAX() 函數(shù)忽略列值為 NULL 的行
MIN() 函數(shù)
MIN() 要求指定列名
select min(score) as score_min
from sc;
此查詢語句返回了 sc
表中 score
字段最小的值,輸出為:
+------------+
| min(score) |
+------------+
| 31.0 |
+------------+
MIN() 函數(shù)忽略列值為 NULL 的行
SUM() 函數(shù)
select sum(score) score_sum
from sc
where sid = 3;
此查詢語句返回了 sid = 3
的總分,輸出為:
+------------+
| sum(score) |
+------------+
| 240.0 |
+------------+
SUM() 也可以用來合計計算值,如:
select sum(price * num) as total_price
from goods;
此查詢語句返回了 goods
表中所有商品的總價,輸出為:
+-------------+
| total_price |
+-------------+
| 6963697.000 |
+-------------+
SUM() 函數(shù)忽略列值為 NULL 的行
聚集不同的值
select avg(distinct score) as score_avg
from sc;
此查詢語句查詢了所有不同分數(shù)的平均分,輸出為:
+-----------+
| score_avg |
+-----------+
| 68.84615 |
+-----------+
組合聚集函數(shù)
SELECT 語句可根據(jù)需要包含多個聚集函數(shù),如:
select count(score) as score_sount,
avg(score) as score_avg,
sum(score) as score_sum,
max(score) as score_max,
min(score) as score_min
from sc;
此查詢語句查詢了 sc
表中所有的分數(shù)人數(shù)、平均分、總分、最高分、最低分,輸出為:
+-------------+-----------+-----------+-----------+-----------+
| score_sount | score_avg | score_sum | score_max | score_min |
+-------------+-----------+-----------+-----------+-----------+
| 18 | 70.77778 | 1274.0 | 99.0 | 31.0 |
+-------------+-----------+-----------+-----------+-----------+