SELECT WHERE column1 = 1 AND column2 = MAX(column2)

SELECT WHERE column1 = 1 AND column2 = MAX(column2)

我有table这样的

|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|

现在我想做的是 select Column 1, Column 2, Column 3 WHERE Column2 = 1 AND Column 3 is largest for column 2 (4)

SELECT Column1,
       Column2,  
       MAX( Column3 ) OVER ( PARTITION BY Column2 ) AS Column3
  FROM Table
 WHERE Column2 = 1;

在上面的解决方案中,我使用 Window 函数和 WHERE 条件提取组 Column2=1 中的最大值。借助 window 函数,您无需在任何特定列上使用任何 GROUP BY 子句即可获得 max/min/count。

您可以使用 window 函数 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);