MySQL CASE 语句和 GROUP BY 语句联合使用详解
在 MySQL 中,可以使用 CASE 语句和 GROUP BY 语句共同使用来对数据进行分组和聚合。下面是一个示例:
假设有一个名为 'students' 的表,包含以下列:id、name、gender 和 score。
要求按照性别统计每个性别的学生总数、平均分和最高分,可以使用以下 SQL 查询:
SELECT
gender,
COUNT(*) AS total_students,
AVG(score) AS average_score,
MAX(score) AS max_score
FROM
students
GROUP BY
gender;
在上述查询中,GROUP BY 语句根据性别对数据进行分组,然后通过 COUNT 函数计算每个分组中的学生总数,通过 AVG 函数计算每个分组中学生的平均分,通过 MAX 函数计算每个分组中学生的最高分。
注意,CASE 语句可以在 SELECT 语句中使用,用于根据条件返回不同的值。在上述查询中,如果需要对某些特定的条件进行统计,可以在 SELECT 语句中使用 CASE 语句来实现。例如,如果需要统计每个性别中及格(分数大于等于 60)的学生数量,可以修改查询如下:
SELECT
gender,
COUNT(*) AS total_students,
SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) AS passed_students
FROM
students
GROUP BY
gender;
在上述查询中,使用 CASE 语句来判断每个学生的分数是否大于等于 60,如果是则返回 1,否则返回 0。然后使用 SUM 函数对这些值进行求和,得到每个性别中及格的学生数量。
原文地址: https://www.cveoy.top/t/topic/qsSO 著作权归作者所有。请勿转载和采集!