Leetcode_1098. 小众书籍

题目难度

中等

题目描述

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

select b.book_id,name
from Books b
left join Orders o
on b.book_id=o.book_id
where timestampdiff(month,b.available_from,'2019-06-23')>0
group by b.book_id
having ifnull(sum(case when timestampdiff(year,dispatch_date,'2019-06-23')=0 then quantity else 0 end),0)<10
思想

两个要求:

  1. 不考虑上架(available from)距今不满一个月的书籍
    Books表中available from列条件筛选,使用where筛选。
  2. 筛选出过去一年中订单总量少于10本的书籍
    每本书是聚合函数的一个组,所以对书籍的筛选用(group by+having)。
知识点
  • ifnull 是防止order表中没有订单的书籍,它的订单量为null,应该被筛选出来。
  • timestampdiff函数计算日期时间差。可计算年、月、日等时间差。使用起来比datediff函数更加灵活。对于比较的两个时间,时间小的放在前面,时间大的放在后面。
    mysql中日期范围搜索的三种方式
    https://blog.csdn.net/weixin_38319645/article/details/81050962
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值