分組查詢結(jié)合子查詢可實現(xiàn)復雜統(tǒng)計,常見方式包括:1. 子查詢作為字段展示附加信息,如部門人數(shù)與公司總?cè)藬?shù);2. WHERE中用子查詢過濾分組前數(shù)據(jù),如統(tǒng)計高薪員工分布;3. HAVING中嵌套子查詢篩選分組結(jié)果,如部門人數(shù)超平均值;4. 將分組結(jié)果作為派生表關(guān)聯(lián)其他查詢,計算占比等指標。關(guān)鍵在于明確子查詢作用位置,合理使用可提升分析靈活性,但需注意性能優(yōu)化,建議必要時使用索引或CTE替代深層嵌套。
在 SQL 中,分組查詢結(jié)合子查詢可以實現(xiàn)更復雜的統(tǒng)計需求。通常使用 GROUP BY 對數(shù)據(jù)進行分組,并通過子查詢獲取額外的匯總信息或條件過濾。下面介紹幾種常見的結(jié)合方式和實際應用場景。
可以在 SELECT 中使用子查詢作為計算字段,與 GROUP BY 配合展示每組的附加統(tǒng)計值。
示例:統(tǒng)計每個部門員工數(shù)量,并顯示公司總?cè)藬?shù)SELECT dept_id, COUNT(*) AS emp_count, (SELECT COUNT(*) FROM employees) AS total_company_employees FROM employees GROUP BY dept_id;
說明:每行顯示某個部門的人數(shù),同時顯示全公司總?cè)藬?shù),子查詢獨立于外層分組。
先通過子查詢確定篩選條件,再對符合條件的數(shù)據(jù)進行分組統(tǒng)計。
示例:統(tǒng)計工資高于公司平均工資的員工在各部門的人數(shù)SELECT dept_id, COUNT(*) AS high_salary_count FROM employees WHERE salary > (SELECT AVG(salary) FROM employees) GROUP BY dept_id;
說明:子查詢計算出平均工資,外層查詢先過濾高薪員工,再按部門分組計數(shù)。
HAVING 子句中可使用子查詢來比較分組聚合值。
示例:找出員工數(shù)超過平均每個部門員工數(shù)的部門SELECT dept_id, COUNT(*) AS emp_count FROM employees GROUP BY dept_id HAVING COUNT(*) > ( SELECT AVG(dept_count) FROM ( SELECT dept_id, COUNT(*) AS dept_count FROM employees GROUP BY dept_id ) AS t );
說明:內(nèi)層子查詢計算各部門人數(shù)的平均值,外層 HAVING 過濾出人數(shù)高于平均的部門。
將分組結(jié)果作為子查詢(派生表),與其他查詢結(jié)果聯(lián)結(jié),實現(xiàn)復雜分析。
示例:列出每個部門人數(shù)及其占公司總?cè)藬?shù)的比例SELECT dept_id, emp_count, ROUND(emp_count * 100.0 / total, 2) AS percentage FROM ( SELECT dept_id, COUNT(*) AS emp_count FROM employees GROUP BY dept_id ) AS dept_stats CROSS JOIN ( SELECT COUNT(*) AS total FROM employees ) AS company_total;
說明:dept_stats 是分組后的部門統(tǒng)計,company_total 提供總數(shù),通過 CROSS JOIN 計算占比。
基本上就這些常見模式。關(guān)鍵在于理解子查詢的位置作用:作為字段、條件、過濾依據(jù)或臨時表。合理使用能靈活處理各類分組統(tǒng)計問題。注意性能,尤其是嵌套多層時建議加索引或考慮 CTE 替代。不復雜但容易忽略細節(jié)。
以上就是SQL 分組查詢?nèi)绾谓Y(jié)合子查詢統(tǒng)計?的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號