1

私はこのようなテーブルを持っています

+------+------+------+------+
| col1 | col2 | col3 | rank |
+------+------+------+------+
|    1 | A    | X    |    4 |
|    2 | C    | Y    |    3 |
|    2 | C    | Y    |    3 |
|      | A    | X    |    3 |
|    1 | B    | Z    |    2 |
+------+------+------+------+

(5行)

このようなo/pが必要です

+------+------+------+------+
| col1 | col2 | col3 | rank |
+------+------+------+------+
|    1 | A    | X    |    4 |
|    2 | C    | Y    |    3 |
|    1 | B    | Z    |    2 |
+------+------+------+------+

以下のようなクエリを書くように

select col1,col2,col3,rank,dense_rank() over(order by rank desc) from table1;

しかし、適切なo/pを与えていません

4

3 に答える 3

0

max() を使用した集計が必要なようです:

select
    col1,col2,col3,
    max(rnk)
from table1
group by col1,col2,col3

col1の 1 つの組み合わせに対しての値が異なる可能性がある場合はcol2, col3、次のdistinct onものが必要です。

select distinct on (col2, col3)
    col1,col2,col3,
    rnk
from table1
order by col2, col3, rnk desc

sql fiddle demo

于 2013-10-28T05:38:50.317 に答える