Leetcode力扣 MySQL数据库 1549 每件商品对的最新订单
1549 每件商品对的最新订单
SQL架构
Create table If Not Exists Customers_1549 (customer_id int, name varchar(10));
Create table If Not Exists Orders_1549 (order_id int, order_date date, customer_id int, product_id int);
Create table If Not Exists Products_1549 (product_id int, product_name varchar(20), price int);
Truncate table Customers_1549;
insert into Customers_1549 (customer_id, name) values ('1', 'Winston');
insert into Customers_1549 (customer_id, name) values ('2', 'Jonathan');
insert into Customers_1549 (customer_id, name) values ('3', 'Annabelle');
insert into Customers_1549 (customer_id, name) values ('4', 'Marwan');
insert into Customers_1549 (customer_id, name) values ('5', 'Khaled');
Truncate table Orders_1549;
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('1', '2020-07-31', '1', '1');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('2', '2020-7-30', '2', '2');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('3', '2020-08-29', '3', '3');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('4', '2020-07-29', '4', '1');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('5', '2020-06-10', '1', '2');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('6', '2020-08-01', '2', '1');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('7', '2020-08-01', '3', '1');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('8', '2020-08-03', '1', '2');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('9', '2020-08-07', '2', '3');
insert into Orders_1549 (order_id, order_date, customer_id, product_id) values ('10', '2020-07-15', '1', '2');
Truncate table Products_1549;
insert into Products_1549 (product_id, product_name, price) values ('1', 'keyboard', '120');
insert into Products_1549 (product_id, product_name, price) values ('2', 'mouse', '80');
insert into Products_1549 (product_id, product_name, price) values ('3', 'screen', '600');
insert into Products_1549 (product_id, product_name, price) values ('4', 'hard disk', '450');
表: Customers
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| customer_id | int |
| name | varchar |
+---------------+---------+
customer_id 是该表主键.
该表包含消费者的信息.
表: Orders
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| order_id | int |
| order_date | date |
| customer_id | int |
| product_id | int |
+---------------+---------+
order_id 是该表主键.
该表包含消费者customer_id产生的订单.
不会有商品被相同的用户在一天内下单超过一次.
表: Products
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| product_id | int |
| product_name | varchar |
| price | int |
+---------------+---------+
product_id 是该表主键.
该表包含所有商品的信息.
写一个SQL 语句, 找到每件商品的最新订单(可能有多个).
返回的结果以 product_name 升序排列, 如果有排序相同, 再以 product_id 升序排列. 如果还有排序相同, 再以 order_id 升序排列.
查询结果格式如下例所示:
Customers
+-------------+-----------+
| customer_id | name |
+-------------+-----------+
| 1 | Winston |
| 2 | Jonathan |
| 3 | Annabelle |
| 4 | Marwan |
| 5 | Khaled |
+-------------+-----------+
Orders
+----------+------------+-------------+------------+
| order_id | order_date | customer_id | product_id |
+----------+------------+-------------+------------+
| 1 | 2020-07-31 | 1 | 1 |
| 2 | 2020-07-30 | 2 | 2 |
| 3 | 2020-08-29 | 3 | 3 |
| 4 | 2020-07-29 | 4 | 1 |
| 5 | 2020-06-10 | 1 | 2 |
| 6 | 2020-08-01 | 2 | 1 |
| 7 | 2020-08-01 | 3 | 1 |
| 8 | 2020-08-03 | 1 | 2 |
| 9 | 2020-08-07 | 2 | 3 |
| 10 | 2020-07-15 | 1 | 2 |
+----------+------------+-------------+------------+
Products
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
| 1 | keyboard | 120 |
| 2 | mouse | 80 |
| 3 | screen | 600 |
| 4 | hard disk | 450 |
+------------+--------------+-------+
Result
+--------------+------------+----------+------------+
| product_name | product_id | order_id | order_date |
+--------------+------------+----------+------------+
| keyboard | 1 | 6 | 2020-08-01 |
| keyboard | 1 | 7 | 2020-08-01 |
| mouse | 2 | 8 | 2020-08-03 |
| screen | 3 | 3 | 2020-08-29 |
+--------------+------------+----------+------------+
keyboard 的最新订单在2020-08-01, 在这天有两次下单.
mouse 的最新订单在2020-08-03, 在这天只有一次下单.
screen 的最新订单在2020-08-29, 在这天只有一次下单.
hard disk 没有被下单, 我们不把它包含在结果表中.
解题
select product_name, o.product_id, order_id, order_date
from Orders_1549 o left join Products_1549 p
using(product_id)
where (product_id, order_date) in
(select product_id, max(order_date) order_datefrom Orders_1549group by product_id
)
order by product_name, product_id, order_id;
Leetcode力扣 MySQL数据库 1549 每件商品对的最新订单相关推荐
- Leetcode力扣 MySQL数据库 1264 页面推荐
1264 页面推荐 SQL架构 Create table If Not Exists Friendship_1264 (user1_id int, user2_id int); Create tabl ...
- Leetcode力扣 MySQL数据库 1468 计算税后工资
1468 计算税后工资 SQL架构 Create table If Not Exists Salaries_1468 (company_id int, employee_id int, employe ...
- Leetcode力扣 MySQL数据库 574 当选者
574 当选者 SQL架构 Create table If Not Exists Candidate_574 (id int, Name varchar(255)); Create table If ...
- 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java
<LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...
- 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java
<LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...
- 《LeetCode力扣练习》第96题 不同的二叉搜索树 Java
<LeetCode力扣练习>第96题 不同的二叉搜索树 Java 一.资源 题目: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回 ...
- 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java
<LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...
- 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java
<LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...
- 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java
<LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...
- 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java
<LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...
最新文章
- 通过@Enable*注解触发Spring Boot配置
- python提供的默认的构造方法是什么_Python面试常见问题,__init__是构造函数吗?...
- tensorflow 制定 CPU 或GPU
- pycharm安装怎么选_客厅窗帘怎么选 客厅窗帘怎么安装好看
- java list 数据不重复,Java中List集合去除重复数据的方法
- 文本挖掘(part3)--词袋模型
- SAP License:SAP中的产量法折旧计算
- Julia的学习资料从哪里找?
- php v9视频教程,PHPCMS V9二次开发视频教程全集
- 微信小程序获取tabbar的高度_微信小程序自定义tabbar
- 开发isv应用的权限处理
- 大屏数据可视化设计指南
- java-抽奖小程序
- unity reflect_Unity Reflect在这里
- MYSQL安装以及登录问题_飘云羽逸_新浪博客
- 科沃斯扫地机器人电路原理图_扫地机器人的工作原理详解
- ORA-00937:不是单组分组函数 ORA-22818:这里不允许出现子查询表达式
- 计算机通讯技术核心期刊有哪些,通信类核心期刊汇总.doc
- node项目部署https服务
- 算法复杂度(时间频度,时间复杂度介绍计算,空间复杂度)
热门文章
- 如何退出微信X5同层播放器?
- 建站软件WordPress和phpcmsv9体验
- 易經大意(19) 三和 韓長庚 著
- 数据对齐(结构体对齐、类成员对齐、动态内存对齐/指针对齐、函数参数对齐、SIMD对齐)
- MySQL高性能优化 笔记
- Unity2S 愤怒的小鸟教程
- 5.15 相约上海!2021 年度首届云原生 Meetup | KubeSphere Friends
- 统计学相比于计算机的优势,生命科学导论2吴庆余课后思考题答案【参考】.doc...
- 重组背后企业制度的变化
- JAVA面试题解惑系列(七)——日期和时间的处理