SQL涉及两列的MAX和Group BY

SQL involving MAX of two colums and Group BY

所以...我得到了这样的 table:

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

而且我需要 select 每个组的较大年份的较大数字。所以我希望这个例子的结果是:

3   1       1       2001
8   2       3       2001

有什么想法吗? OBS:使用 Postgres

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

SELECT DISTINCT ON ("group") * FROM tbl
  ORDER BY "group", year DESC, id DESC;
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