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

Ste*_*tef 3 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
Run Code Online (Sandbox Code Playgroud)

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

-                   |   52900.0 |   20090706
ELITE PACKAGE       |   62500.0 |   20090706
TECH PACKAGE        |   58200.0 |   20090706
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些(我认为)可以在mySQL中运行的东西,但是我无法将其用于postgres.

是否有可能做到,我该怎么做?

谢谢,

斯蒂芬妮

A Q*_*ker 5

另一种避免自我加入的选择(我总是讨厌自我加入)

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;
Run Code Online (Sandbox Code Playgroud)