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