每日一题-42(小众书籍)

题42:

根据下面两个表写一段SQL命令,筛选出过去一年中订单总量少于10本的书籍。其中:不考虑上架(available from)距今不满一个月的书籍。并且假设今天是2019-06-23。

在这里插入图片描述
其中:

  • Books表:book_id是主键;
  • Orders 表:order_id是主键,book_id 是Books表的外键。

解题思路:
(1)需要查询过去一年内订单总量少于10本,需要筛选出根本没有订单的书;
(2)不考虑上架不满一个月的书:应该直接通过where筛除,不符合条件的连null都不应该有,否则会混入结果中导致错误。

select a.book_id, name
from books a
left join orders b
on a.book_id = b.book_id and dispatch_date >= '2018-06-23'--,根据书的id连接两表,并剔除2018-06-23以前的信息
where available_from < '2019-05-23'--剔除上架不满一个月的书
group by a.book_id
having ifnull(sum(quantity), 0) < 10;--用ifnull是将没有订单的返回的null转变为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值