1-4练习题-SQL进阶教程

练习题1-4-1 :修改编号缺失的检查逻辑,使结果总是返回一行数据
在“寻找缺失的编号”部分,我们写了一条SQL语句,让程序只在存在缺失的编号时返回结果。请将SQL语句修改成始终返回一行结果,即存在缺失的编号时返回“存在缺失的编号”,不存在缺失的编号时返回“不存在缺失的编号”
在这里插入图片描述

select '存在缺失的编号' gap
from SeqTbl
having count(*)<>max(seq)
union all
select '不存在缺失的编号' gap
from SeqTbl
having count(*)=max(seq);

select
(case when count(*)<>max(seq) then '存在缺失的编号' else '不存在缺失的编号' end) gap
from SeqTbl;

练习题1-4-2 :练习“特征函数”
这里我们使用正文中的表Students,稍微练习一下特征函数的用法吧。请想出一条查询“全体学生都在 9月份提交了报告的学院”的SQL语句。满足条件的只有经济学院。理学院学号为100的学生是10月份提交的报告,所以不满足条件。文学院和工学院还有学生尚未提交报告,所以也不满足条件在这里插入图片描述

-- 使用between谓词
select dpt
from Students
group by dpt
having count(*)=sum(case whensbmt_date between '2005-09-01' and '2005-09-30' then 1 else 0 end);

-- 使用extract函数
select dpt
from Students
group by dpt
having count(*)=sum(case when extract(year from sbmt_date)=2005 and extract(month from sbmt_date)=09 then 1 else 0 end);

练习题1-4-3 :购物篮分析问题的一般化
在“用关系除法运算进行购物篮分析”部分,返回结果只选择了满足条件的店铺。但是有时候会有不同的需求,比如对于没有备齐全部商品类型的店铺,我们也希望返回的一览表能展示这些店铺缺少多少种商品。
请修改正文中的SQL语句,使程序能够返回下面这样展示了全部店铺的结果的一览表。my_item_cnt是店铺的现有库存商品种类数,diff_cnt是不足的商品种类数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

select SI.shop,count(SI.item) my_item_cnt,
(select count(item) from Items)-count(SI.item) diff_cnt
from ShopItems SI,Items I
where SI.item I.item
group by SI.shop;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值