gpt4 book ai didi

sql - 如何限制 Postgresql 中的重复行

转载 作者:行者123 更新时间:2023-12-02 18:53:38 25 4
gpt4 key购买 nike

嗨,我有类似于表的数据:fruit_table

<表类=“s-表”><标题>产品代码产品日期 <正文>MG芒果2020-01-25MG芒果2020-01-26MG芒果2020-01-27MG芒果2020-01-28BN香蕉2019-01-15BN香蕉2020-01-19BN香蕉2020-01-20BN香蕉2016-01-20AP苹果2021-03-02

正如您在数据中看到的,我们有 Mango 4 种产品和 Banana 4 种产品,以及 Apple 1 种产品,我想要解决方案是限制最新日期的产品为2行。

我想要类似于的输出

<表类=“s-表”><标题>产品代码产品日期 <正文>MG芒果2020-01-27MG芒果2020-01-28BN香蕉2020-01-19BN香蕉2020-01-20AP苹果2021-03-02

如何通过 PostgreSQL 查询中的简单查询来实现这一点。提前致谢。

最佳答案

demo:db<>fiddle

您可以使用row_number() window function实现这一目标:

SELECT
*
FROM (
SELECT
*,
row_number() OVER (PARTITION BY "Product Code" ORDER BY "Date" DESC) -- 1
FROM fruit_table
) s
WHERE row_number <= 2 -- 2
  1. row_number() 向有序组(= 分区)中的每个记录添加行计数。在您的情况下,该组是产品代码(或产品),您需要按日期DESC对每个组进行排序才能获取最新日期到顶部。现在,每组中最近的日期获取行数 1,第二个最近的日期获取 2,依此类推
  2. 使用此行计数,您可以仅过滤每组的前两条记录。

关于sql - 如何限制 Postgresql 中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66436958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com