mysql的group by函數(shù)使用方法
MySQL中的GROUP BY子句用于將查詢結果按一個或多個列進行分組,通常與聚合函數(shù)(如COUNT, SUM, AVG, MAX, MIN等)配合使用,實現(xiàn)數(shù)據(jù)的分組統(tǒng)計。以下是詳細使用方法:
1. 基礎語法
SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 ORDER BY column1;
2. 核心功能
(1) 單列分組
統(tǒng)計每個部門的員工數(shù)量:
SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department;
(2) 多列分組
統(tǒng)計每個部門+職位的平均工資:
SELECT department, job_title, AVG(salary) AS avg_salary FROM employees GROUP BY department, job_title;
(3) 結合聚合函數(shù)
COUNT():計數(shù)SUM():求和AVG():平均值MAX()/MIN():極值GROUP_CONCAT():合并分組內的字符串
3. 過濾分組:HAVING
WHERE過濾行,HAVING過濾分組:
SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department HAVING avg_salary > 5000; -- 篩選平均工資>5000的部門
4. 常見錯誤
(1) SELECT非聚合列未分組
? 錯誤寫法:
SELECT department, employee_name, COUNT(*) FROM employees GROUP BY department;
? 正確寫法:
SELECT department, GROUP_CONCAT(employee_name), COUNT(*) FROM employees GROUP BY department;
(2) HAVING與WHERE混淆
WHERE在分組前過濾(如過濾原始數(shù)據(jù))HAVING在分組后過濾(如過濾統(tǒng)計結果)
5. 高級用法
(1) WITH ROLLUP(生成小計/總計)
SELECT department, SUM(salary) FROM employees GROUP BY department WITH ROLLUP;
結果會多出一行NULL,表示所有部門的總計。
(2) 分組后排序
SELECT department, COUNT(*) FROM employees GROUP BY department ORDER BY COUNT(*) DESC; -- 按員工數(shù)量降序排列
6. 注意事項
- MySQL 5.7+默認啟用
ONLY_FULL_GROUP_BY模式,要求SELECT中的非聚合列必須出現(xiàn)在GROUP BY中。 - 可通過
ANY_VALUE()函數(shù)繞過嚴格模式:SELECT ANY_VALUE(employee_name), department, COUNT(*) FROM employees GROUP BY department;
示例場景
統(tǒng)計2023年每月銷售額及訂單數(shù):
SELECT
MONTH(order_date) AS month,
SUM(amount) AS total_sales,
COUNT(order_id) AS order_count
FROM orders
WHERE YEAR(order_date) = 2023
GROUP BY MONTH(order_date)
ORDER BY month;通過靈活組合GROUP BY和聚合函數(shù),可以高效實現(xiàn)復雜的數(shù)據(jù)統(tǒng)計分析需求。
到此這篇關于mysql的group by函數(shù)怎么使用的文章就介紹到這了,更多相關mysql group by函數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- mysql中的group?by用法指南
- MySQL的GROUP BY與COUNT()函數(shù)的使用方法及常見問題
- mysql中的group?by和between用法詳解
- mysql中的group by高級用法
- MySQL GROUP BY分組取字段最大值的方法示例
- MySQL中distinct和group by去重的區(qū)別解析
- MySQL中ONLY_FULL_GROUP_BY的使用小結
- MySQL 5.7升級8.0報異常:ONLY_FULL_GROUP_BY的問題解決
- 解決mysql @@sql_mode問題---only_full_group_by
- mysql group by 多個行轉換為一個字段
相關文章
Linux系統(tǒng)徹底卸載MySQL數(shù)據(jù)庫詳解
這篇文章主要介紹了Linux系統(tǒng)徹底卸載MySQL數(shù)據(jù)庫,首先查詢系統(tǒng)是否安裝了mysql,如果安裝需要提前卸載,并刪除mysql安裝的組建服務,本文給大家介紹的非常詳細,需要的朋友可以參考下2022-09-09
Druid數(shù)據(jù)庫連接池的jar包的使用方式
這篇文章主要介紹了Druid數(shù)據(jù)庫連接池的jar包的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
ubuntu mysql 5.6版本的刪除/安裝/編碼配置文件配置
這篇文章主要介紹了ubuntu mysql 5.6版本的刪除,安裝,編碼配置文件配置,需要的朋友可以參考下2017-06-06
MySQL遷移KingbaseESV8R2的實現(xiàn)步驟
本文主要介紹了MySQL遷移KingbaseESV8R2的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

