我正在开发一个可跟踪电视节目的Web应用程序,因此我需要获取所有作为季末结局的剧集ID,这意味着,对于所有电视节目来说,这是所有季节中最高的剧集编号。
这是我的“情节”表的简化版本。
id tvshow_id season epnum
---|-----------|--------|-------
1 | 1 | 1 | 1
2 | 1 | 1 | 2
3 | 1 | 1 | 3
4 | 1 | 2 | 1
5 | 1 | 2 | 2
6 | 2 | 1 | 1
7 | 2 | 1 | 2
8 | 2 | 1 | 3
9 | 2 | 1 | 4
10 | 2 | 2 | 1
11 | 2 | 2 | 2
预期输出:
id
---|
3 |
5 |
9 |
11 |
我设法使它在最近的一个季节都可以使用,但是我不能在所有季节都可以使用。
我也尝试从this中吸取一些想法,但似乎找不到在其中添加tvshow_id的方法。
我正在使用Postgres v10
答案 0 :(得分:2)
您可以使用下面的SQL来获得结果,将GROUP BY与子子查询一起使用:
select id from tab_x
where (tvshow_id,season,epnum) in (
select tvshow_id,season,max(epnum)
from tab_x
group by tvshow_id,season)
答案 1 :(得分:2)
{{1}}
答案 2 :(得分:0)
下面是获得所需结果的简单查询。在使用 distinct on()子句
的帮助下,以下查询的性能也很好select distinct on (tvshow_id,season) id from your_table order by tvshow_id,season ,epnum desc