一、基础概念
1、分组函数是一个SQL的聚合函数,它根据一个或多个列对结果集进行分组,并对每个组应用聚合函数。 2、常用的分组函数有SUM、COUNT、AVG、MIN、MAX等。 3、分组函数通常与GROUP BY子句一起使用,用来确定分组的方式。
SELECT department, SUM(salary)
FROM employees
GROUP BY department;
二、分组函数的应用场景
1、用来获取分组统计数据,例如某科目及格人数、总成绩、平均分等。 2、在订单、账单等数据中,用来统计各项指标的值,例如销售额、订单数量等。 3、在日志、用户行为数据分析中,用来查看各项指标的聚类情况,例如用户访问次数、日志数量等。
SELECT subject, COUNT(*) as pass_num
FROM scores
WHERE score >= 60
GROUP BY subject;
三、分组函数的优化方案
1、优化分组前的查询,这包括对索引的优化、SQL语句的调整等。 2、使用覆盖索引,避免对表的全表扫描。 3、合理使用内存表,将分组后的结果存入内存表,可以加速查询速度。 4、使用分区表,将表数据按照某个字段进行分区存储,可以提高查询效率。
-- 使用内存表加速分组查询
CREATE TEMPORARY TABLE temp_table
SELECT department, SUM(salary) as total_salary
FROM employees
GROUP BY department;
-- 查询内存表
SELECT * FROM temp_table;
四、分组函数的注意事项
1、需要注意GROUP BY子句中的列名称顺序,不同的顺序可能会导致查询结果不同。 2、在使用分组函数时,注意分组函数是否支持NULL值,以及对应的结果。 3、当分组的列较多时,查询效率可能会较低,此时需要进行优化。
-- 查询不同城市每个职业的平均薪资,注意要加上GROUP BY子句
SELECT city, job, AVG(salary)
FROM employees
GROUP BY city, job;