在数据库中,我们经常需要对数据进行分组统计,以便更好地理解和分析数据。GROUP BY 语句是一种常用的实现数据分组的方法,而结合 CASE 语句可以根据不同的条件进行分组统计。1. 数据准备首先,我们需要准备一些数据来进行示例演示。假设我们有一个学生表,其中包含学生的姓名、性别、年龄和所在班级等信息。我们想要根据学生的性别进行分组统计,看看每个班级男女生的人数。下面是一个简单的学生表:
sqlCREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(100), gender VARCHAR(10), age INT, class VARCHAR(10));INSERT INTO students (id, name, gender, age, class)VALUES (1, '张三', '男', 18, '一班'), (2, '李四', '女', 17, '一班'), (3, '王五', '男', 19, '二班'), (4, '赵六', '女', 18, '二班'), (5, '陈七', '男', 17, '三班'), (6, '刘八', '女', 18, '三班'), (7, '杨九', '男', 19, '四班'), (8, '周十', '女', 17, '四班');
2. GROUP BY + CASE 语句实现分组统计现在我们可以使用 GROUP BY 语句结合 CASE 语句来实现分组统计。我们可以根据学生的性别进行分组,然后使用 COUNT 函数统计每个班级男女生的人数。下面是示例代码:
sqlSELECT class, COUNT(CASE WHEN gender = '男' THEN 1 ELSE NULL END) AS male_count, COUNT(CASE WHEN gender = '女' THEN 1 ELSE NULL END) AS female_countFROM studentsGROUP BY class;
4. 通过使用 GROUP BY + CASE 语句,我们成功地实现了根据学生的性别进行分组统计的目标。从结果中可以看出,每个班级都有一个男生和一个女生,数据分组统计的结果清晰明了。本文介绍了如何使用 GROUP BY + CASE 语句实现数据分组统计,并通过一个简单的学生表的案例演示了具体的实现步骤。GROUP BY 语句可以帮助我们按照某个字段进行数据分组,而 CASE 语句则可以根据不同的条件进行分组统计。这种组合可以在实际的数据分析中发挥重要作用,帮助我们更好地理解和分析数据。