我有这样的表
|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 3
WHERE Column2 = 1和第3列最大的第2列(4
)
答案 0 :(得分: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;
或者这样做,如果不支持,但要小心,如果col3中有nulls
,你必须处理:
select col1, col2, col3
from my_table t
where col2 = 1
and col3 = (select max(col3)
from my_table
where col2 = t.col2);
答案 1 :(得分:0)
SELECT Column1,
Column2,
MAX( Column3 ) OVER ( PARTITION BY Column2 ) AS Column3
FROM Table
WHERE Column2 = 1;
在上面的soln中,我通过使用Window函数和WHERE条件来提取Group2 = 1组中的最大值。在窗口函数的帮助下,您可以获得最大/最小/计数,而无需在任何特定列上使用任何GROUP BY子句。