基于PostgreSQL中的Group By获取最近的日期[已关闭]

jhdbpxl9  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(2)|浏览(118)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

12小时前关闭。
Improve this question
我有一个电影表,里面有100多部不同的电影,在PostgreSQL上显示如下:

我想知道每一部最新发行的电影的名字,根据每一种类型
如何在PostgreSQL中获得以下输出?

lnxxn5zx

lnxxn5zx1#

您可以使用窗口函数(如DENSE_RANK()),并通过返回等于1的值进行筛选,如下所示

SELECT Genre, Movie_Name 
  FROM
  (
   SELECT t.*, DENSE_RANK() OVER (PARTITION BY Genre ORDER BY Released_Date DESC) AS dr
    FROM t
  ) tt
 WHERE dr = 1

在哪里

  • PARTITION BY表示GROUP BY
  • DESC结尾ORDER ing BY意思是得到最新的
  • ROW_NUMBER()不同,DENSE_RANK()函数保持Released_Dates的关系(* 每个组的日期值相等 *)
eulz3vhy

eulz3vhy2#

使用DISTINCT ON获得不同的流派。ORDER BY将为您提供每个流派的最新版本。

SELECT DISTINCT ON (Genre) Movie_Name, Genre, Released_Date 
FROM movie_table m
ORDER BY Genre, Released_Date DESC

相关问题