Mysql中強(qiáng)大的group?by語句解析
GROUP BY 語句根據(jù)一個或多個列對結(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 來進(jìn)行分組,查詢 user 表中的姓名,年齡,性別。雖然是分組了,但只顯示一個用戶,其他的不顯示。
SELECT NAME,age,sex FROM USER GROUP BY sex;根據(jù) sex 字段,來查詢 name字段和 age字段的詳細(xì)信息。
SELECT sex ,GROUP_CONCAT(NAME), GROUP_CONCAT(age)FROM USER GROUP BY sex;根據(jù) sex 字段來查詢 name 字段的詳細(xì)信息和 sex 字段性別的人數(shù)。
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER GROUP BY sex;根據(jù) sex字段進(jìn)行分組,用 where語句來查詢年齡大于25的人數(shù)
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER WHERE age >25 GROUP BY sex;根據(jù) sex 用 SUM MAX MIN AVG 函數(shù)來查詢用戶的總資金,最大資金,最小資金,平局資金
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)鍵字無法與聚合函數(shù)一起使用。 HAVING 子句可以讓我們篩選分組后的各組數(shù)據(jù)。 根據(jù) sex 語句進(jì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)計數(shù)據(jù)基礎(chǔ)上再進(jìn)行相同的統(tǒng)計(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語句解析的文章就介紹到這了,更多相關(guān)Mysql的group by語句內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
