目录
3.表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列
5.姓名:name 课程:subject 分数:score 学号:stuid
2.计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩)
3.计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)
4.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)
5.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)
6.列出各门课程成绩最好的两位学生(要求显示字段: 学号,姓名,科目,成绩)
9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名)
10.列出数学成绩在2-3名的学生(要求显示字段:学号,姓名,科目,成绩)
12.统计如下:课程 不及格(0-59)个 良(60-80)个 优(81-100)个
13.统计如下:数学:张三(50分),李四(90分),王五(90分),赵六(76分)
1.学生表
(学生id,姓名,性别,分数)student(s_id,name,sex,score)
班级表(班级id,班级名称)class(c_id,c_name)
学生班级表(班级id,学生id)student_class(s_id,c_id)
1.查询一班得分在80分以上的学生
2.查询所有班级的名称,和所有版中女生人数和女生的平均分
题解:
1 .select * from student where score> 80 and s_id
in ( select sid from student_class where c_id=( select c_id from class where c_name= '一班' ))
2 .select c.c_name,女生人数= sum (s.s_id),平均分= avg (s.score) from classes c
inner join student_class sc on sc.c_id=c.c_id
inner join students s on s.s_id=sc.s_idwhere s.sex= '女' group by c.c_name
2.一道SQL语句面试题,关于group by表内容:
info 表
date result
2005-05-09 win
2005-05-09 lose
2005-05-09 lose
2005-05-09 lose
2005-05-10 win
2005-05-10 lose
2005-05-10 lose
如果要生成下列结果, 该如何写sql语句?
win lose
2005-05-09 2 2
2005-05-10 1 2
答案:
( 1 ) select date , sum ( case when result = "win" then 1 else 0 end ) as "win",
sum ( case when result = "lose" then 1 else 0 end ) as "lose" from info group by date ;
( 2 ) select a.date, a.result as win, b.result as lose from
( select date , count ( result ) as result from info where result = "win" group by date ) as a
join
( select date , count ( result ) as result from info where result = "lose" group by date ) as b
on a.date = b.date; 2.学生成绩表(stuscore):
3.表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列
select ( case when a > b then a else b end ), ( case when b > c then b else c end ) from table ;
4.
|
5.姓名:name 课程:subject 分数:score 学号:stuid
张三 数学 89 1
张三 语文 80 1
张三 英语 70 1
李四 数学 90 2
李四 语文 70 2
李四 英语 80 2
题解:

4万+

被折叠的 条评论
为什么被折叠?



