嗨,我有与表类似的数据:fruit_table
产品代码 | 产品 | 日期 |
---|---|---|
名爵 | 芒果 | 2020-01-25 |
名爵 | 芒果 | 2020-01-26 |
名爵 | 芒果 | 2020-01-27 |
名爵 | 芒果 | 2020-01-28 |
国阵 | 香蕉 | 2019-01-15 |
国阵 | 香蕉 | 2020-01-19 |
国阵 | 香蕉 | 2020-01-20 |
国阵 | 香蕉 | 2016-01-20 |
美联社 | 苹果 | 2021-03-02 |
正如您在数据中看到的那样,我们有Mango 4产品和Banana 4产品以及Apple产品有1种产品,我希望解决方案是将产品的日期限制为2行。
我想要类似的输出
产品代码 | 产品 | 日期 |
---|---|---|
名爵 | 芒果 | 2020-01-27 |
名爵 | 芒果 | 2020-01-28 |
国阵 | 香蕉 | 2020-01-19 |
国阵 | 香蕉 | 2020-01-20 |
美联社 | 苹果 | 2021-03-02 |
如何通过PostgreSQL查询中的简单查询来实现。提前致谢。
您可以使用row_number()
窗口函数来实现以下目的:
SELECT
*
FROM (
SELECT
*,
row_number() OVER (PARTITION BY "Product Code" ORDER BY "Date" DESC) -- 1
FROM fruit_table
) s
WHERE row_number <= 2 -- 2
row_number()
将行计数添加到有序组(=分区)中的每个记录。在您的情况下,组是Product Code
(或Product
),您需要按顺序对每个组进行排序,Date DESC
以使最新日期排在最前面。现在,每个组中的最新日期将获得行计数1
,第二个最近的日期将得到行数,2
依此类推本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句