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);
我有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);