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;