首页 > 数据库 >leetcode 1549 每件商品的最新订单(postgresql)

leetcode 1549 每件商品的最新订单(postgresql)

时间:2024-07-25 15:24:42浏览次数:9  
标签:product postgresql 08 leetcode order 2020 --------+ 1549 id

需求

表: 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 升序排列.

查询结果格式如下例所示。

示例 1:

输入:
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 |
±-----------±-------------±------+
输出:
±-------------±-----------±---------±-----------+
| 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 没有被下单, 我们不把它包含在结果表中.

输入

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

输出

with t1 as (
select *,
       rank() over (partition by product_id order by order_date desc) as rn1
from orders
)
select product_name,p.product_id,order_id,order_date
from t1,products p
where t1.product_id=p.product_id and rn1=1
order by product_name,p.product_id,order_id desc

在这里插入图片描述

标签:product,postgresql,08,leetcode,order,2020,--------+,1549,id
From: https://blog.csdn.net/weixin_51696882/article/details/140690238

相关文章

  • PostgreSQL学习笔记----GUC机制
    GUC介绍在守护进程Postmaster初始化内存环境之后,需要配置Postmaster运行时所需的各种参数。GUC(GrandUnifedConfiguralion)模块实现了多种数据类型(目前有boolean、int、real、string、enum五种)的变量配置。这些参数可能会由不同的进程在不同的时机进行配置,系统会根据......
  • gitlab12-postgresql-主备
    gitlab-postgresql-12.3一、简介1、gitlab仅支持postgresql数据库管理系统,因此,数据库服务器有两个选项可用于linux软件包安装:使用Linux软件包安装附带的打包PostgreSQL服务器(不需要配置,推荐)使用外部postgresql服务器,(需要配置,并且需要手动为数据库设定种子)2、本章节......
  • LeetCode 864. Shortest Path to Get All Keys
    原题链接在这里:https://leetcode.com/problems/shortest-path-to-get-all-keys/description/题目:Youaregivenan mxn grid grid where:'.' isanemptycell.'#' isawall.'@' isthestartingpoint.Lowercaselettersrepresentkeys.U......
  • 代码随想录算法训练营第 23 天 |LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetC
    代码随想录算法训练营Day23代码随想录算法训练营第23天|LeetCode39.组合总和LeetCode40.组合总和IILeetCode131.分割回文串目录代码随想录算法训练营前言LeetCode39.组合总和LeetCode40.组合总和IILeetCode131.分割回文串一、基础1、回溯可以看成N叉树2、去......
  • 代码随想录算法训练营第 22 天 |LeetCode77. 组合 LeetCode 216.组合总和III LeetCode
    代码随想录算法训练营Day22代码随想录算法训练营第22天|LeetCode77.组合LeetCode216.组合总和IIILeetCode17.电话号码的字母组合目录代码随想录算法训练营前言LeetCode77.组合LeetCode216.组合总和IIILeetCode17.电话号码的字母组合一、基础1、回溯可以解......
  • 将非常大的数据插入 PostgreSQL 表的更好方法
    将非常大的数据插入PostgreSQL表的更好方法是什么?操作系统:Ubuntu22.04LTS数据库:PostgreSQL14框架:Python3.11Django现在我使用insertinto语句一次100,000行。平均插入1,000,000行整个过程需要2分钟,在我可以接受的范围内。但我想知道是否有更好的方法......
  • LeetCode122. 买卖股票的最佳时机 II
    题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/题目叙述:给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后......
  • LeetCode 热题 HOT 100 (007/100)【宇宙最简单版】
    【数组】No.0215数组中第k个最大的元素【中等】......
  • LeetCode860. 柠檬水找零
    题目链接:https://leetcode.cn/problems/lemonade-change/description/题目叙述:在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,......
  • LeetCode455.分发饼干
    LeetCode题目链接:https://leetcode.cn/problems/assign-cookies/description/题目叙述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺......