SQL涉及两列MAX和Group BY

时间:2015-03-18 20:49:28

标签: sql postgresql max

所以......我有一张这样的桌子:

id  group   number  year
1   1       1       2000
2   1       2       2000
3   1       1       2001
4   2       1       2000
5   2       2       2000
6   2       1       2001
7   2       2       2001
8   2       3       2001

我需要为每个小组选择更大的年份。所以我希望这个例子的结果是:

3   1       1       2001
8   2       3       2001

任何想法? OBS:使用Postgres

2 个答案:

答案 0 :(得分:2)

如果您想获得某些行,则可以使用DISTINCT。如果您想在同一行上使用不同的最大值,可以使用GROUP BY

SELECT DISTINCT ON ("group") * FROM tbl
  ORDER BY "group", year DESC, id DESC;

答案 1 :(得分:2)

SELECT *
FROM (
  SELECT *,
    row_number() over (partition by "group" order by "year" desc, "number" desc ) x
  FROM table1
) x
WHERE x = 1;

演示:http://sqlfiddle.com/#!15/cd78e/2