-2

次のようなテーブルがあります。

 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の最大数を示す結果が欲しいです。次の表はどのようなクエリで得られますか?

 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
4

3 に答える 3

2

これはうまくいくはずです:

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 を使用したサンプルSQL Fiddle 。

于 2013-11-03T22:04:21.247 に答える