建一個(gè)大型網(wǎng)站需要多少錢網(wǎng)絡(luò)服務(wù)器價(jià)格
功能介紹
group by: 對數(shù)據(jù)進(jìn)行分組和聚合操作(可以操作單字段和多字段)
having:過濾group by的結(jié)果,也就是在分組后添加篩選條件
基礎(chǔ)語法
select? 字段列表? from? 表名? [ where 條件 ]? ?group by? 分組字段名? [ having ];
where 和 having的區(qū)別
執(zhí)行時(shí)機(jī)不同:where是分組之前進(jìn)行過濾,不滿足where條件,不參與分組;而having是分組
之后對結(jié)果進(jìn)行過濾。(執(zhí)行順序:where -> 聚合函數(shù) ->having)
判斷條件不同:where不能對聚合函數(shù)進(jìn)行判斷,而having可以。
實(shí)踐操作
1. 查詢每個(gè)性別(男、女)的用戶數(shù)量:
SELECT gender, COUNT(*) as count
FROM User
GROUP BY gender;
2. 查詢年齡大于20的男性用戶數(shù)量:
SELECT gender, COUNT(*) as count
FROM User
WHERE age > 20 AND gender = 1
GROUP BY gender;
3. 查詢每個(gè)性別的用戶年齡總和,并按照總和降序排序
SELECT gender, SUM(age) as total_age
FROM User
GROUP BY gender
ORDER BY total_age DESC;
4. 查詢每個(gè)性別的用戶數(shù)量,并篩選出數(shù)量大于等于2的分組
SELECT gender, COUNT(*) as count
FROM User
GROUP BY gender
HAVING count >= 2;
5. 查詢每個(gè)性別的用戶數(shù)量,并按照數(shù)量降序排序,只返回前1個(gè)分組:
SELECT gender, COUNT(*) as count
FROM User
GROUP BY gender
ORDER BY count DESC
LIMIT 1;
6.多字段分組
SELECT gender, age, COUNT(*) as count
FROM User
GROUP BY gender, age;
上一篇:MySQL - SQL聚合函數(shù)(查詢操作 二)
下一篇:MySQL - order by排序查詢 (查詢操作 四)