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 每件商品对的最新订单相关推荐

  1. Leetcode力扣 MySQL数据库 1264 页面推荐

    1264 页面推荐 SQL架构 Create table If Not Exists Friendship_1264 (user1_id int, user2_id int); Create tabl ...

  2. Leetcode力扣 MySQL数据库 1468 计算税后工资

    1468 计算税后工资 SQL架构 Create table If Not Exists Salaries_1468 (company_id int, employee_id int, employe ...

  3. Leetcode力扣 MySQL数据库 574 当选者

    574 当选者 SQL架构 Create table If Not Exists Candidate_574 (id int, Name varchar(255)); Create table If ...

  4. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  5. 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java

    <LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...

  6. 《LeetCode力扣练习》第96题 不同的二叉搜索树 Java

    <LeetCode力扣练习>第96题 不同的二叉搜索树 Java 一.资源 题目: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回 ...

  7. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java

    <LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...

  8. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java

    <LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...

  9. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

  10. 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java

    <LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...

最新文章

  1. 通过@Enable*注解触发Spring Boot配置
  2. python提供的默认的构造方法是什么_Python面试常见问题,__init__是构造函数吗?...
  3. tensorflow 制定 CPU 或GPU
  4. pycharm安装怎么选_客厅窗帘怎么选 客厅窗帘怎么安装好看
  5. java list 数据不重复,Java中List集合去除重复数据的方法
  6. 文本挖掘(part3)--词袋模型
  7. SAP License:SAP中的产量法折旧计算
  8. Julia的学习资料从哪里找?
  9. php v9视频教程,PHPCMS V9二次开发视频教程全集
  10. 微信小程序获取tabbar的高度_微信小程序自定义tabbar
  11. 开发isv应用的权限处理
  12. 大屏数据可视化设计指南
  13. java-抽奖小程序
  14. unity reflect_Unity Reflect在这里
  15. MYSQL安装以及登录问题_飘云羽逸_新浪博客
  16. 科沃斯扫地机器人电路原理图_扫地机器人的工作原理详解
  17. ORA-00937:不是单组分组函数 ORA-22818:这里不允许出现子查询表达式
  18. 计算机通讯技术核心期刊有哪些,通信类核心期刊汇总.doc
  19. node项目部署https服务
  20. 算法复杂度(时间频度,时间复杂度介绍计算,空间复杂度)

热门文章

  1. 如何退出微信X5同层播放器?
  2. 建站软件WordPress和phpcmsv9体验
  3. 易經大意(19) 三和 韓長庚 著
  4. 数据对齐(结构体对齐、类成员对齐、动态内存对齐/指针对齐、函数参数对齐、SIMD对齐)
  5. MySQL高性能优化 笔记
  6. Unity2S 愤怒的小鸟教程
  7. 5.15 相约上海!2021 年度首届云原生 Meetup | KubeSphere Friends
  8. 统计学相比于计算机的优势,生命科学导论2吴庆余课后思考题答案【参考】.doc...
  9. 重组背后企业制度的变化
  10. JAVA面试题解惑系列(七)——日期和时间的处理