Mysql中強大的group?by語句解析
GROUP BY 語句根據(jù)一個或多個列對結果集進行分組。在分組的列上我們可以使用 COUNT, SUM, AVG,等函數(shù)。
工具:
sqlyog
實例建表 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信息就不補充了~
(1)基本用法根據(jù)性別 sex 來進行分組,查詢 user 表中的姓名,年齡,性別。雖然是分組了,但只顯示一個用戶,其他的不顯示。
SELECT NAME,age,sex FROM USER GROUP BY sex;根據(jù) sex 字段,來查詢 name字段和 age字段的詳細信息。
SELECT sex ,GROUP_CONCAT(NAME), GROUP_CONCAT(age)FROM USER GROUP BY sex;根據(jù) sex 字段來查詢 name 字段的詳細信息和 sex 字段性別的人數(shù)。
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER GROUP BY sex;根據(jù) sex字段進行分組,用 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 關鍵字無法與聚合函數(shù)一起使用。 HAVING 子句可以讓我們篩選分組后的各組數(shù)據(jù)。 根據(jù) sex 語句進行分組,來查詢各組中資金大于1500的組
SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER GROUP BY sex HAVING SUM(salary)>1500;WITH ROLLUP 可以實現(xiàn)在分組統(tǒng)計數(shù)據(jù)基礎上再進行相同的統(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ù)還是十分強大的,使得分組查找效率更高!
到此這篇關于Mysql中強大的group by語句解析的文章就介紹到這了,更多相關Mysql的group by語句內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!
