2

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

|Column 1 |Column 2|Column 3|
|        1|       1|       1|
|        2|       1|       2|
|        3|       1|       3|
|        4|       2|       1|
|        5|       1|       4|
|        6|       2|       2|
|        7|       2|       3|
|        8|       2|       4|
|        9|       2|       5|

今私がしたいのは、Column 1, Column 2, Column 3WHERE Column2 = 1 AND Column 3 is maximum for column 2 ( 4)を選択することです

4

2 に答える 2

3

ウィンドウ関数rankを使用して、col3 の最大値を見つけることができます

select col1, col2, col3 from
    (select 
        col1, col2, col3,
        rank() over (order by col3 desc nulls last) rnk
    from my_table
    where col2 = 1)
where rnk = 1;

または、サポートされていない場合はこれを行いますnullsが、col3 にある場合は注意して処理する必要があります。

select col1, col2, col3
from my_table t
where col2 = 1
and col3 = (select max(col3)
    from my_table
    where col2 = t.col2);
于 2016-12-15T19:34:09.960 に答える
0
SELECT Column1,
       Column2,  
       MAX( Column3 ) OVER ( PARTITION BY Column2 ) AS Column3
  FROM Table
 WHERE Column2 = 1;

上記のソリューションでは、ウィンドウ関数と WHERE 条件を使用して、グループ Column2=1 の最大値を抽出しています。ウィンドウ関数を使用すると、特定の列で GROUP BY 句を使用せずに最大/最小/カウントを取得できます。

于 2016-12-15T19:30:52.217 に答える