mysql的group by函數(shù)使用方法
MySQL中的GROUP BY
子句用于將查詢結(jié)果按一個或多個列進行分組,通常與聚合函數(shù)(如COUNT
, SUM
, AVG
, MAX
, MIN
等)配合使用,實現(xiàn)數(shù)據(jù)的分組統(tǒng)計。以下是詳細使用方法:
1. 基礎(chǔ)語法
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) 結(jié)合聚合函數(shù)
COUNT()
:計數(shù)SUM()
:求和AVG()
:平均值MAX()/MIN()
:極值GROUP_CONCAT()
:合并分組內(nèi)的字符串
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)計結(jié)果)
5. 高級用法
(1) WITH ROLLUP(生成小計/總計)
SELECT department, SUM(salary) FROM employees GROUP BY department WITH ROLLUP;
結(jié)果會多出一行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)復(fù)雜的數(shù)據(jù)統(tǒng)計分析需求。
到此這篇關(guān)于mysql的group by函數(shù)怎么使用的文章就介紹到這了,更多相關(guān)mysql group by函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 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的使用小結(jié)
- MySQL 5.7升級8.0報異常:ONLY_FULL_GROUP_BY的問題解決
- 解決mysql @@sql_mode問題---only_full_group_by
- mysql group by 多個行轉(zhuǎn)換為一個字段
相關(guān)文章
MySQL數(shù)據(jù)庫執(zhí)行Update卡死問題的解決方法
最近開發(fā)的時候debug到一條update的sql語句時程序就不動了,然后我就在plsql上試了一下,發(fā)現(xiàn)plsql一直在顯示正在執(zhí)行,等了好久也不出結(jié)果,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫執(zhí)行Update卡死問題的解決方法,需要的朋友可以參考下2022-05-05Mysql處理Duplicate entry ‘6‘ for key
這篇文章主要介紹了Mysql處理Duplicate entry ‘6‘ for key ‘PRIMARY‘問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06MySQL提示“too?many?connections“錯誤的解決過程
當(dāng)大量的connect之后,就會出現(xiàn)Too many connections的錯誤,下面這篇文章主要給大家介紹了關(guān)于MySQL提示“too?many?connections“錯誤的解決過程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-04-04MySQL中使用replace、regexp進行正則表達式替換的用法分析
這篇文章主要介紹了MySQL中使用replace、regexp進行正則表達式替換的用法,結(jié)合具體實例形式分析了replace、regexp正則替換的使用技巧與相關(guān)注意事項,需要的朋友可以參考下2017-03-03MySQL之union和union all的使用及區(qū)別說明
這篇文章主要介紹了MySQL之union和union all的使用及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04一鍵搭建MYSQL主從,輕松應(yīng)對數(shù)據(jù)備份與恢復(fù)
MYSQL主從是一種常見的數(shù)據(jù)庫架構(gòu),它可以提高數(shù)據(jù)庫的可用性和性能,在主從架構(gòu)中,主數(shù)據(jù)庫負責(zé)處理寫操作,而從數(shù)據(jù)庫負責(zé)處理讀操作,當(dāng)主數(shù)據(jù)庫發(fā)生故障時,從數(shù)據(jù)庫可以接管并繼續(xù)提供服務(wù),從而實現(xiàn)高可用性,需要的朋友可以參考下2023-10-10linux下mysql開啟遠程訪問權(quán)限 防火墻開放3306端口
這篇文章主要為大家詳細介紹了linux下mysql開啟遠程訪問權(quán)限,防火墻開放3306端口,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01