分组求和,根据学校分组,根据具体条件求和
城市做A表 左关联学校 B表 , B表左关联 班级C表 C表左关联 D表学生的统计求和数据
看图, 应该点选左侧城市, 右侧展示对应统计数据, 所以SQL里城市作为查询条件加在WHERE里
SELECT
学校名称,
COUNT(班级名称) AS 班级数量,
COUNT(会员数量) AS 会员数量,
COUNT(非会员数量) AS 非会员数量,
FROM
(
SELECT
学校表.学校名称,
班级表.班级名称,
(CASE WHEN 学生表.状态 = '会员' THEN COUNT(学生表.主键) END) AS 会员数量,
(CASE WHEN 学生表.状态 = '非会员' THEN COUNT(学生表.主键) END) AS 非会员数量
FROM 学校表
LEFT JOIN 班级表 ON 学校表.主键 = 班级表.学校外键
LEFT JOIN 学生表 ON 班级表.主键 = 学生表.班级外键
WHERE
学校表.城市外键 = '城市表主键'
GROUP BY 学校表.学校名称, 班级表.班级名称
) AS tmp
GROUP BY 学校名称