对应课程代码,课程名称,学分,其中课程代码前2位代表不同类型的课程,如BT 代表 专业必修课,XZ 代表专业限选课。
1.统计 course表中学分数(credit)大于2的课程门数
select count(cno) from course where credit > 2
2.统计所有专业必修课(BT开头的课程代码)的学分总数
select sum(credit) from course where cno like 'BT%'
3.按课程类别统计每个类别课程的门数,如课程代码BT001,BT002都是专业必修课
select substring(cno,1,2),count(cno) from course
group by substring(cno,1,2)
表示的含义是
model:打印机型号;
color:是否彩色, T 彩色,F 黑白
type:类型,ink-jet 表示喷墨, laser 表示激光;
price:单价
1.统计激光彩色打印机有多少种型号
select count(distinct type) from printer
2.找出最便宜的喷墨打印机价格
select min(price) from printer where type = 'ink-jet'
3.找出最贵的激光打印机型号和价格
select model,price from printer
where price =
(select max(price) from printer)
maker:表示生产厂商
model:生产的产品型号
type:产品类型,有pc laptop两种
pc(model,speed,ram,hd,price)
表示型号,速度,内存大小,硬盘大小,价格
laptop(model,speed,ram,hd,screen,price)
表示型号,速度,内存大小,硬盘大小,屏幕大小和价格
本题可使用视图V_test(视图已经创建完成,可直接使用,不需要再次创建视图)
create view V_test as
select product.maker,product.model,product.type,pc.price,pc.hd,pc.speed from product join pc on product.model=pc.model
union
select product.maker,product.model,product.type,laptop.price,laptop.hd,laptop.speed from product join laptop on product.model=laptop.model
1.查询在一种或两种电脑(含PC和laptop)中出现过的硬盘的容量
select hd from v_test group by hd having count(model)<3
2.统计各生产厂商生产的电脑(不区分pc和laptop)的平均处理速度的最大值
select max(AVGSPD) from
(select avg(speed) as AVGSPD
from V_test group by maker)
as AVGTable
3.统计出各厂商生产价格高于1000的产品数量,不用区分是pc还是laptop
select maker, count(*) from v_test
where price > 1000 group by maker
4分别统计各厂商生产的pc,laptop的平均价格
select maker,type, avg(price) from V_test
group by maker,type
练习点都是聚合函数的使用和简单的嵌套查询,个人练习做个记录