文章目錄
- 1 聚合函式
- 1.1 count
- 1.2 sum
- 1.3 avg
- 1.4 max
- 1.5 min
- 2 分組查詢
- 2.1 group by
- 2.2 having
聚合查詢是更復雜的查詢陳述句,將若干行給合并起來,
1 聚合函式
- count函式可以查詢任何型別的資料,但是其他函式只能查詢數字,因為它要做基本的數學計算,不是數字就沒有意義,
| 聚合函式 | 說明 |
|---|---|
| count | 回傳查詢到的資料的數量 |
| sum | 回傳查詢到的資料的總和,不是數字沒有意義 |
| avg | 回傳查詢到的資料的 平均值,不是數字沒有意義 |
| max | 回傳查詢到的資料的 最大值,不是數字沒有意義 |
| min | 回傳查詢到的資料的 最小值,不是數字沒有意義 |
這一小節所有的陳述句執行都是在student這個表中進行操作,

1.1 count
select count(*) from student;
相當于先執行select * 基礎查詢,再根據select * 回傳的結果,進行計數,
Q:若某個資料為NULL,那么count能否計上該數?
不難發現,此時count并沒有記錄NULL的數,所以我們需要注意,如果count指定的某列資料值為NULL,則不會計入到最終計數中;


1.2 sum
select sum(math) from student;
計算student表中所有學生數學成績的總和,

1.3 avg
select avg(math) from student;
計算student表中數學成績的平均分,

1.4 max
select max(math) from student;
計算student表中數學成績中的最高分,

1.5 min
select min(math) from student;
計算student表中數學成績中的最低分,

2 分組查詢
2.1 group by
分組聚合指的是,根據某個列的值進行分組,把值相同的行分到一組去,然后再針對對每個組分別執行聚合函式,
實際開發中,我們可能不需要所有資料聚合在一起,我們需要分組聚合,那么就可是使用gruop by,
我們先創建一張表,這一小節所有的陳述句執行都是在emp這個職工表中進行操作,

Q:查詢每種崗位的最高薪資,最低薪資以及平均薪資的情況,如何操作?
顯然,單純使用聚合函式沒有辦法對每種崗位進行分類,它只能查詢所有人的情況,所以我們需要先根據 role 這一列資料進行分組,
select column1, sum(column2), .. from table group by column1;
該陳述句會把相同的role進行分組,再對各組分別執行max,min,avg聚合函式,

2.2 having
Q:查詢平均薪資在150以上的崗位資訊,如何操作?
- 看到條件篩選,大部分同學應該都會想到where,where確實能標傲世條件,但是要注意的是,此處是不能使用where的,where的條件篩選是針對當前表中的原始資料(聚合前的資料)進行篩選,而現在我們希望對聚合后的資料進行篩選,
- 針對聚合后的資料進行篩選,我們可以使用having子句,having的語法和where中的寫法是一樣的,只是換了個關鍵字,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/301708.html
標籤:其他
上一篇:如何保證訊息的可靠性傳輸
下一篇:幣王Biking9月20日資訊
