sql - 在 GROUP BY 查询之前获取最新条目

标签 sql postgresql

使用 postgres,我想检索每个不同的包,但检索每个组的最新包。

例如,我有一个名为 products 的表:

package_name        price           date
-               |   52500.0 |   20080910
-               |   52900.0 |   20090422
-               |   52900.0 |   20090706
ELITE PACKAGE   |   62200.0 |   20080910
ELITE PACKAGE   |   62500.0 |   20090706
ELITE PACKAGE   |   62500.0 |   20090422
TECH PACKAGE    |   57200.0 |   20080910
TECH PACKAGE    |   58200.0 |   20090706
TECH PACKAGE    |   58200.0 |   20090422

我想通过 SQL 查询获得以下结果:

-                   |   52900.0 |   20090706
ELITE PACKAGE       |   62500.0 |   20090706
TECH PACKAGE        |   58200.0 |   20090706

我已经尝试了一些(我认为)可以在 mySQL 中使用的方法,但我无法将其正确用于 postgres。

这是否可行,我该怎么做?

谢谢,

斯蒂芬妮

最佳答案

避免自连接的另一种选择(我一直讨厌自连接)

SELECT package_name,price,date FROM
(
 SELECT package_name,price,date,
        ROW_NUMBER() OVER (PARTITION BY package_name ORDER BY date DESC) as rw
 FROM products
) a
WHERE rw=1;

关于sql - 在 GROUP BY 查询之前获取最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114873/

相关文章:

sql - "read commited"和 "repeatable read"的区别

SQL 分组查询。总计的

mysql - 选择与字符串末尾完全匹配的行

mysql - 给定一个帖子 X,选择所有的帖子 Y,使得对它们都评分的用户都没有喜欢它们

c - 如何在 Postgres C 函数中使用自定义类型将数组返回到数组中?

mysql - 当我输入 non 时,它需要显示 1 和 12 年

postgresql - 选择 1 行到 2 列查询 postgresql

postgresql - 为 PostgreSQL 设置 lc_monetary

sql - SQL Server 索引的 PostgreSQL 模拟(包括列)

sql - 如何查询 Postgres `RECORD` 数据类型