SQL练习+答案(一)
1. 表结构
表名:购物信息
购物人 | 商品名称 | 数量 |
---|---|---|
A | 甲 | 2 |
B | 乙 | 4 |
C | 丙 | 1 |
A | 丁 | 2 |
B | 丙 | 5 |
……
(其他用户实验的记录大家可自行插入)
2. 问题
给出所有购入商品为两种或两种以上的购物人记录
3. 答案
select * from 购物信息 where 购物人 in (select 购物人 from 购物信息 group by 购物人 having count(*) >= 2);
1. 表结构
表名:成绩表
姓名 | 课程 | 分数 |
---|---|---|
张三 | 语文 | 81 |
张三 | 数学 | 75 |
李四 | 语文 | 56 |
李四 | 数学 | 90 |
王五 | 语文 | 81 |
王五 | 数学 | 100 |
王五 | 英语 | 49 |
……
2. 问题
给出成绩全部合格的学生信息(包含姓名、课程、分数),注:分数在60以上评为合格
3. 答案
select * from 成绩表 where 姓名 not in (select distinct 姓名 from 成绩表 where 分数 < 60)
或者:
select * from 成绩表 where 姓名 in (select 姓名 from 成绩表 group by 姓名 having min(分数) >=60)
1. 表结构
表名:商品表
名称 | 产地 | 进价 |
---|---|---|
苹果 | 烟台 | 2.5 |
苹果 | 云南 | 1.9 |
苹果 | 四川 | 3 |
西瓜 | 江西 | 1.5 |
西瓜 | 北京 | 2.4 |
……
(其他用户实验的记录大家可自行插入)
2. 问题
给出平均进价在2元以下的商品名称
3. 答案
select 名称 from 商品表 group by 名称 having avg(进价) < 2
1. 表结构
表名:高考信息表
准考证号 | 科目 | 成绩 |
---|---|---|
2006001 | 语文 | 119 |
2006001 | 数学 | 108 |
2006002 | 物理 | 142 |
2006001 | 化学 | 136 |
2006001 | 物理 | 127 |
2006002 | 数学 | 149 |
2006002 | 英语 | 110 |
2006002 | 语文 | 105 |
2006001 | 英语 | 98 |
2006002 | 化学 | 129 |
……
(其他用户实验的记录大家可自行插入)
2. 问题
给出高考总分在600以上的学生准考证号
3. 答案
select 准考证号 from 高考信息表 group by 准考证号 having sum(成绩) > 600
1. 表结构
表名:高考信息表
准考证号 | 数学 | 语文 | 英语 | 物理 | 化学 |
---|---|---|---|---|---|
2006001 | 108 | 119 | 98 | 127 | 136 |
2006002 | 149 | 105 | 110 | 142 | 129 |
……
(其他用户实验的记录大家可自行插入)
2. 问题
给出高考总分在600以上的学生准考证号
3. 答案
select 准考证号 from 高考信息表 where (数学+语文+英语+物理+化学) > 600
1. 表结构
表名:club
id | gender | age |
---|---|---|
67 | M | 19 |
68 | F | 30 |
69 | F | 27 |
70 | F | 16 |
71 | M | 32 |
……
(其余测试数据请自行插入)
2. 问题
查询出该俱乐部里男性会员和女性会员的总数
3. 答案
select gender,count(id) from club group by gender
1. 表结构
表名:team
ID(number型) | Name(varchar2型) |
---|---|
1 | a |
2 | b |
3 | b |
4 | a |
5 | c |
6 | c |
2. 问题
执行一个删除语句,当Name列上有相同时,只保留ID这列上值小的
例如:删除后的结果应如下:
ID(number型) | Name(varchar2型) |
---|---|
1 | a |
2 | b |
5 | c |
请写出SQL语句。
3. 答案
delete from team where id not in (select min(id) from team group by name)
1. 表结构
表名:student
name | course | score |
---|---|---|
张青 | 语文 | 72 |
王华 | 数学 | 72 |
张华 | 英语 | 81 |
张青 | 物理 | 67 |
李立 | 化学 | 98 |
张燕 | 物理 | 70 |
张青 | 化学 | 76 |
2. 问题
查询出“张”姓学生中平均成绩大于75分的学生信息
3. 答案
select * from student where name in (select name from student
where name like '张%' group by name having avg(score) > 75)
(待续)
原作者:sunshine0990