MySQL分組查詢(mysql分組查詢每組最新記錄)
孩子學(xué)習(xí)?對于所有的家長來,最關(guān)心就是孩子的學(xué)習(xí),對吧?如何幫孩子提升學(xué)習(xí)成績呢?影響孩子學(xué)習(xí)成績的因素有哪些?左養(yǎng)右學(xué)教育賴頌強(qiáng)團(tuán)隊(duì)13年的家庭教育服務(wù)經(jīng)驗(yàn)總結(jié),影響孩子學(xué)習(xí)的主要因素有22條之多,家長你了解幾條呢?
學(xué)習(xí)目標(biāo)
- 能夠?qū)懗龇纸M查詢的SQL語句
分組查詢
1. 分組查詢介紹
分組查詢就是將查詢結(jié)果按照指定字段進(jìn)行分組,字段中數(shù)據(jù)相等的分為一組。
分組查詢基本的語法格式如下:
SELECT 字段1,字段2… FROM 表名 GROUP BY 分組字段 HAVING 分組條件;
說明:
- 列名: 是指按照指定字段的值進(jìn)行分組。
- HAVING 條件表達(dá)式: 用來過濾分組后的數(shù)據(jù)。
- WITH ROLLUP:在所有記錄的最后加上一條記錄,顯示select查詢時(shí)聚合函數(shù)的統(tǒng)計(jì)和計(jì)算結(jié)果
2. group by的使用
GROUP BY根據(jù)指定的字段對數(shù)據(jù)記錄進(jìn)行分組
例1:分組后查看表中有哪些category_id
SELECT category_id FROM product GROUP BY category_id;
3. group by + 聚合函數(shù)的使用
例2:查看每類商品的最大價(jià)格
SELECT category_id, max(price) FROM product GROUP BY category_id;
?
4. group by + having的使用
分組操作中的having子語句,是用于在分組后對數(shù)據(jù)進(jìn)行過濾的,作用類似于where條件。
例1:將所有商品按組分類,獲取每組的平均價(jià)格大于600的所有分組
SELECT category_id,avg(price) FROM product GROUP BY category_id HAVING avg(price) > 600;
?
例2:統(tǒng)計(jì)各個分類商品的個數(shù),且只顯示個數(shù)大于1的信息
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;
?
having與where的區(qū)別:
- having是在分組后對數(shù)據(jù)進(jìn)行過濾.,where是在分組前對數(shù)據(jù)進(jìn)行過濾。
- having后面可以使用分組函數(shù)(統(tǒng)計(jì)函數(shù)),where后面不可以使用分組函數(shù)。
5. 小結(jié)
- group by 根據(jù)指定的一個或者多個字段對數(shù)據(jù)進(jìn)行分組
- 聚合函數(shù)在和 group by 結(jié)合使用時(shí), 聚合函數(shù)統(tǒng)計(jì)和計(jì)算的是每個分組的數(shù)據(jù)
- having 是對分組數(shù)據(jù)進(jìn)行條件過濾