group by和基本的聚合函数经常出笔试题的类型

以下是笔试中经常会对group by 基本的聚合函数出题的类型。

(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 姓名 not in (select distinct 姓名 from 成绩表 where 分数 < 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
2006001     
英语       98
2006002     
化学      129
给出高考总分在600以上的学生准考证号
答:select 准考证号 from 高考信息表 group by 准考证号 having sum(成绩) > 600
(5)表名:高考信息表
准考证号        数学       语文       英语        物理        化学
2006001        108         119         98        127        136
2006002       149          105       110        142        129

给出高考总分在600以上的学生准考证号
答:select 准考证号 from 高考信息表 where (数学+语文+英语+物理+化学) > 600
(
四部分)
(一)表名: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
(二)表名: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 id not in (select min(id)from team group by name)
(三)表名:student
name course score
张青语文     72
王华数学     72
张华英语     81
张青物理     67
李立化学     98
张燕物理     70
张青化学     76
查询出“张”姓学生中平均成绩大于75分的学生信息
答:select * from student where name in (select name from student
where name like '
张%'group by name having avg(score) > 75)

 

你可能感兴趣的:(oracle)