如何在GROUP BY分组查询中同时显示每日平均薪资与周总平均薪资
实现分组查询同时展示全周总平均薪资的SQL方案
方法1:用UNION ALL合并分组结果与总平均
直接把原有分组查询和全周平均的查询结果合并,给总平均行加个明确标识:
SELECT weekday, AVG(salary) AS avg_salary FROM table1 GROUP BY weekday UNION ALL SELECT '全周平均' AS weekday, AVG(salary) AS avg_salary FROM table1;
这种方式会在每日平均的结果后面多一行全周总平均的数据,一眼就能区分开分组行和汇总行。
方法2:用窗口函数实现同行展示总平均(需数据库支持窗口函数,比如MySQL8+、PostgreSQL、SQL Server)
通过窗口函数计算全局的平均薪资,让每一行每日平均的旁边都带上全周总平均:
SELECT weekday, AVG(salary) AS avg_salary, AVG(AVG(salary)) OVER () AS total_avg_salary FROM table1 GROUP BY weekday;
这种方式适合需要把每日平均和全周总平均放在同一行对比的场景,不用额外翻找汇总行。
内容的提问来源于stack exchange,提问作者rafine
相关产品推荐
相关产品推荐

