Sql 什么查询会得到这个结果?

Sql 什么查询会得到这个结果?,sql,database,postgresql,Sql,Database,Postgresql,我的表格如下: att1 | att2 | num ------+--------+------+ wm1 | A | 1 wm6 | A | 3 wm5 | B | 4 wm7 | C | 2 wm0 | D | 1 wm2 | D | 2 wm3 | D | 2 wm4 | E | 1 我想要一个结果,让我为每个att2的最大num。什么查询会给我下

我的表格如下:

 att1 |  att2  |  num           
------+--------+------+
 wm1    | A |    1
 wm6    | A |    3
 wm5    | B |    4
 wm7    | C |    2
 wm0    | D |    1
 wm2    | D |    2
 wm3    | D |    2
 wm4    | E |    1
我想要一个结果,让我为每个att2的最大num。什么查询会给我下表

 att1 |  att2  |  num           
------+--------+------+
 wm6    | A |    3
 wm5    | B |    4
 wm7    | C |    2
 wm2    | D |    2
 wm3    | D |    2
 wm4    | E |    1
编辑:我试过:

SELECT att2, max(num) FROM *original table* GROUP BY att2
但这也带来了:

 att2  |  num           
------+--------+
 | A |    3
 | B |    4
 | C |    2
 | D |    2
 | D |    2
 | E |    1

尝试
选择att1、att2、MAX(num)作为表组中的num,按att2排序,按att2 ASC排序

这应该可以:

SELECT t1.att1, t1.att2, t1.num 
FROM table1 t1
INNER JOIN (SELECT att2, max(num) AS max_num FROM Table1 GROUP BY att2
  ) t2 ON t1.att2=t2.att2 AND t1.num = t2.max_num
ORDER BY t1.att2, num

使用PostgreSQL 9.2.4进行示例。

在等待答案之前,您应该向我们展示您尝试过的内容。抱歉,编辑了原始帖子。@3dgoo它不允许我在psql中这样做,因为att1需要显示在GROUP BY中或在聚合函数中使用。在psql中给我以下错误:错误:列“table.att1”必须出现在GROUP BY子句中或在聚合中使用function@user2950816很高兴我能帮忙:)
select att1, att2, num
from (
  select att1, 
         att2, 
         num,
         max(num) over (partition by att2) as max_num
  from the_table
) t
where num = max_num;