Mysql中強(qiáng)大的group?by語(yǔ)句解析
GROUP BY 語(yǔ)句根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。在分組的列上我們可以使用 COUNT, SUM, AVG,等函數(shù)。
工具:
sqlyog
實(shí)例建表 user表CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `number` int(11) DEFAULT NULL, `sex` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, `salary` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

信息就不補(bǔ)充了~
(1)基本用法根據(jù)性別 sex 來(lái)進(jìn)行分組,查詢(xún) user 表中的姓名,年齡,性別。雖然是分組了,但只顯示一個(gè)用戶(hù),其他的不顯示。
SELECT NAME,age,sex FROM USER GROUP BY sex;
根據(jù) sex 字段,來(lái)查詢(xún) name字段和 age字段的詳細(xì)信息。
SELECT sex ,GROUP_CONCAT(NAME), GROUP_CONCAT(age)FROM USER GROUP BY sex;
根據(jù) sex 字段來(lái)查詢(xún) name 字段的詳細(xì)信息和 sex 字段性別的人數(shù)。
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER GROUP BY sex;
根據(jù) sex字段進(jìn)行分組,用 where語(yǔ)句來(lái)查詢(xún)年齡大于25的人數(shù)
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER WHERE age >25 GROUP BY sex;
根據(jù) sex 用 SUM MAX MIN AVG 函數(shù)來(lái)查詢(xún)用戶(hù)的總資金,最大資金,最小資金,平局資金
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex),SUM(salary),MAX(salary),MIN(salary),AVG(salary) FROM USER GROUP BY sex;
在 SQL 中增加 HAVING 子句原因是,WHERE 關(guān)鍵字無(wú)法與聚合函數(shù)一起使用。 HAVING 子句可以讓我們篩選分組后的各組數(shù)據(jù)。 根據(jù) sex 語(yǔ)句進(jìn)行分組,來(lái)查詢(xún)各組中資金大于1500的組
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER GROUP BY sex HAVING SUM(salary)>1500;
WITH ROLLUP 可以實(shí)現(xiàn)在分組統(tǒng)計(jì)數(shù)據(jù)基礎(chǔ)上再進(jìn)行相同的統(tǒng)計(jì)(SUM,AVG,COUNT…)。
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex),SUM(salary),MAX(salary),MIN(salary),AVG(salary) FROM USER GROUP BY sex WITH ROLLUP;
從中發(fā)現(xiàn) GROUP BY 函數(shù)還是十分強(qiáng)大的,使得分組查找效率更高!
到此這篇關(guān)于Mysql中強(qiáng)大的group by語(yǔ)句解析的文章就介紹到這了,更多相關(guān)Mysql的group by語(yǔ)句內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

網(wǎng)公網(wǎng)安備