考え方を変え、仕事の記録

毎日少しずつ進歩します。作業記録。
今日は新しいSQLを書きたいのですが、書き方がわかりません。
データ構造は次のようになります]

成绩表
用户   |   成绩
张三1 |   A+
张三2 |   B
张三3 |   B- 
李四1 |   B
李四2 |   C
李四3 |   B 
......
班级表
班级 |  用户   | 类型
A班  | 张三1 | 优秀班级
B班  | 李四1 | 普通班级
.....

クラスAの何人がA-以下の優秀なクラスで、クラスBは普通のクラスの何人がB-以上のスコアを持っているかを考えていました。結果は数字ではないため、比較できません。 2つのテーブルでそれを行っています。比較してから、テーブルを追加する方がよいと思います。

字典表
字段| code
C- | 0
C  | 1
B- | 2
B  | 3
A- | 4 
A+ | 5 
班级表
班级 | 成员   | 类型   | code 
A班  | 张三1 | 优秀班级 | 4
B班  | 李四1 | 普通班级 | 2
.....

これで、3つのテーブルを直接相関させて、標準を下回る各クラスの人数を見つけることができます。

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.班级

このようにして、クラスごとにグループ化し、標準を下回るデータ数をクエリできます。

おすすめ

転載: blog.csdn.net/zhongzih/article/details/108059172