几道SQL笔试题目,该如何处理
几道SQL笔试题目
------解决方案--------------------
试下能做对几个·
(4)
select rq,
sum( case when sf='胜' then 1 else 0 end ) as '胜',
sum( case when sf='负' then 1 else 0 end ) as '负'
from tmp
group by rq
(3)
select 学生id from 成绩表 a where 学生id in(select 学生id from 成绩表 b where b.课程id>a.课程id and b.课程分数>a.b.课程分数 group by 学生id)
------解决方案--------------------
(2)
第二题,学生ID都没有一个。。。重名怎么算?
咱假设它名字就先当于ID·要不没法做了·
select * from 成绩表 t where 姓名 not in(select 姓名 from 成绩表 where 分数<60)
------解决方案--------------------
(1)
select distint(商品名称),sum(数量) from tb where exists(select 购物人,商品名称 from tb where 数量>0 group by 购物人,商品名称 having count(购物人)>1 ) group by 商品名称
------解决方案--------------------
1、
select 购物人,商品名称,数量 from 购物信息 where 购物人 in (
select 购物人 from 购物信息 group by 购物人 having count(购物人) > 1
)
order by 购物人,商品名称 desc
2、
select * from 成绩表 where 姓名 not in (
select 姓名 from 成绩表 where 分数 < 60
)
写前两个吧。
表名,字段名千万别用中文了,太不方便。
------解决方案--------------------
LZ 发到 数据库版里,得到的答案可能会更专业。
------解决方案--------------------
同意楼上,
------解决方案--------------------
mark下 以后会用到
------解决方案--------------------
第三题:
select * from 成绩表 a inner join 成绩表 b on a.id=b.id and a.课程id<b.课程id and a.课程分数>b.课程分数
- CSS code
(1)表名:购物信息 购物人 商品名称 数量 A 甲 2 B 乙 4 C 丙 1 A 丁 2 B 丙 5 …… 查询出购物人购买了两种或两种以上物品 的购物信息 效果如下: 购物人 商品名称 数量 A 甲 2 A 丁 2 B 乙 4 B 丙 5 .... (2)表名:成绩表 姓名 课程 分数 张三 语文 81 张三 数学 75 李四 语文 56 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 49 …… 查询出成绩全部合格的学生信息(包含姓名、课程、分数),注:分数在60以上评为合格 (3)成绩表 学生id 课程id 课程分数 1 1 5 1 2 6 2 1 4 2 2 3 3 1 4 3 2 5 ..... 查询出 课程 1 比课程 2 分数高的所有学生的学号 (4) 赛事表 tmp rq(日期) sf(胜负) 2005-05-09 胜 2005-05-09 负 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 胜 2005-05-10 负 要求 , 查询出每天的胜负情况 , 结果如下: rq(日期) 胜 负 2005-05-09 2 3 2005-05-10 2 1
------解决方案--------------------
试下能做对几个·
(4)
select rq,
sum( case when sf='胜' then 1 else 0 end ) as '胜',
sum( case when sf='负' then 1 else 0 end ) as '负'
from tmp
group by rq
(3)
select 学生id from 成绩表 a where 学生id in(select 学生id from 成绩表 b where b.课程id>a.课程id and b.课程分数>a.b.课程分数 group by 学生id)
------解决方案--------------------
(2)
第二题,学生ID都没有一个。。。重名怎么算?
咱假设它名字就先当于ID·要不没法做了·
select * from 成绩表 t where 姓名 not in(select 姓名 from 成绩表 where 分数<60)
------解决方案--------------------
(1)
select distint(商品名称),sum(数量) from tb where exists(select 购物人,商品名称 from tb where 数量>0 group by 购物人,商品名称 having count(购物人)>1 ) group by 商品名称
------解决方案--------------------
1、
select 购物人,商品名称,数量 from 购物信息 where 购物人 in (
select 购物人 from 购物信息 group by 购物人 having count(购物人) > 1
)
order by 购物人,商品名称 desc
2、
select * from 成绩表 where 姓名 not in (
select 姓名 from 成绩表 where 分数 < 60
)
写前两个吧。
表名,字段名千万别用中文了,太不方便。
------解决方案--------------------
LZ 发到 数据库版里,得到的答案可能会更专业。
------解决方案--------------------
同意楼上,
------解决方案--------------------
mark下 以后会用到
------解决方案--------------------
第三题:
select * from 成绩表 a inner join 成绩表 b on a.id=b.id and a.课程id<b.课程id and a.课程分数>b.课程分数