一,表A记录了某学校全体学生的课程成绩,表结构如下:name(姓名),grade(年级),kecheng(课程),score(分数)
1.筛选出没门课都大于80分的学生姓名
2.新增一列分数分档:优秀,良好,及格,不及格,并筛选出成绩为不及格的明细数据。
Tips:存在部分学生没参加考试的情况。
二,对表A,查询每个学生分数最高与分数最低的课程以及对应的分数,并统计个年级成绩最高与最低的课程分布。
三,对表A,查询各年级总分在300分以上学生人数。
四,表B奖惩表,表结构如下:name(姓名),grade(年级),item(奖惩项),查询每个年级有过奖惩的人数比例。
Tips:表B为表A的真子集。
五,统计表A中没个学生总分的分布,要求分数没每10分为一档,要求语句简单,尽量不使用case when 语句.
六,如何将表A转化为如下表结构:name,grade,课程A分数,课程B分数,课程C分数。。。
七,比较如下SQL差异
A:
select *
from table_name a
left join table_name_b b
on a.id = b.id
where a.age>18 and b.rule_id = 1 ;
B:
select *
from (select * from table_name where age >18) a
left join (select * from table_name_b where rule_id =1) b
on a.id = b.id;
九,简要说明connect by level的用法