LeetCode:Database 49.小众书籍

Posted Xiao Miao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:Database 49.小众书籍相关的知识,希望对你有一定的参考价值。

要求:你需要写一段SQL命令,筛选出过去一年中订单总量少于10本的书籍。

注意:不考虑上架(available from)距今不满一个月的书籍。并且假设今天是2019-06-23 。

书籍表 Books的结构:

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| book_id        | int     |
| name           | varchar |
| available_from | date    |
+----------------+---------+
book_id 是这个表的主键。

订单表 Orders的结构:

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| order_id       | int     |
| book_id        | int     |
| quantity       | int     |
| dispatch_date  | date    |
+----------------+---------+
order_id 是这个表的主键。
book_id  是 Books 表的外键。

Books 表:

+---------+--------------------+----------------+
| book_id | name               | available_from |
+---------+--------------------+----------------+
| 1       | "Kalila And Demna" | 2010-01-01     |
| 2       | "28 Letters"       | 2012-05-12     |
| 3       | "The Hobbit"       | 2019-06-10     |
| 4       | "13 Reasons Why"   | 2019-06-01     |
| 5       | "The Hunger Games" | 2008-09-21     |
+---------+--------------------+----------------+

Orders 表:

+----------+---------+----------+---------------+
| order_id | book_id | quantity | dispatch_date |
+----------+---------+----------+---------------+
| 1        | 1       | 2        | 2018-07-26    |
| 2        | 1       | 1        | 2018-11-05    |
| 3        | 3       | 8        | 2019-06-11    |
| 4        | 4       | 6        | 2019-06-05    |
| 5        | 4       | 5        | 2019-06-20    |
| 6        | 5       | 9        | 2009-02-02    |
| 7        | 5       | 8        | 2010-04-13    |
+----------+---------+----------+---------------+

Result Table:

+-----------+--------------------+
| book_id   | name               |
+-----------+--------------------+
| 1         | "Kalila And Demna" |
| 2         | "28 Letters"       |
| 5         | "The Hunger Games" |
+-----------+--------------------+

SQL语句:

select book_id,name
from books
where book_id
not in(
select book_id
from orders
where dispatch_date between adddate('2019-06-23',interval -1 year) and '2019-06-23'
group by book_id
having sum(quantity)>=10)
and available_from<= adddate('2019-06-23',interval -1 month);

以上是关于LeetCode:Database 49.小众书籍的主要内容,如果未能解决你的问题,请参考以下文章

深入理解小众算法之妙用:从Leetcode实践出发(题号99215272)Quick select与Morris traversal

leetcode Database3

[LeetCode]-DataBase-Rising Temperature

[LeetCode]-DataBase-Combine Two Tables

[LeetCode]-DataBase-Nth Highest Salary

[LeetCode]-DataBase-Department Highest Salary