每天进步一点点 工作记录
今天要写一个新的sql但是不知道怎么写
数据结构类似如下]
成绩表
用户 | 成绩
张三1 | A+
张三2 | B
张三3 | B-
李四1 | B
李四2 | C
李四3 | B
......
班级表
班级 | 用户 | 类型
A班 | 张三1 | 优秀班级
B班 | 李四1 | 普通班级
.....
之前一直在想 A班是优秀班级成绩在A-以下的有多少人,B班是普通班级成绩在B-以上的有多少人,因为成绩不是数字,所以无法对比,一直在两张表上面做对比,然后想,加多一张表会不会好点
字典表
字段| code
C- | 0
C | 1
B- | 2
B | 3
A- | 4
A+ | 5
班级表
班级 | 成员 | 类型 | code
A班 | 张三1 | 优秀班级 | 4
B班 | 李四1 | 普通班级 | 2
.....
现在就是直接三张表关联就可以查询出来每个班低于标准的人数
select a.班级,count(case when a.code = 4 and a.code > c.code then 1
when a.code = 2 and a.code > c.code then 1 end) as num
from 班级表 a
left join 成绩表 b on a.用户 = b.用户
left join 字典表 c on c.code = b.成绩
group by a.班级
这样就可以按班级分组然后查询出低于标准的数据人数了