У меня есть таблица, которая выглядит следующим образом:
col1 col2 col3
------ ----- -----
A 1 trout
A 2 trout
B 1 bass
C 1 carp
C 2 tuna
D 1 salmon
Я действительно хочу выбрать только строки с максимальным значением для col2.
Запрос, который я хочу сгенерировать, вернул быследующее:
col1 col2 col3
------ ----- -----
A 2 trout
B 1 bass
C 2 tuna
D 1 salmon
Я пробовал что-то вроде этого:
select col1, max (col2) as mCol2, col3
from mytable
group by col1, col2
В этом случае я получаю:
col1 Mcol2 col3
------ ----- -----
A 2 trout
B 1 bass
C 1 carp
C 2 tuna
D 1 salmon
Как видите, явсе еще получаю C, 1, carp
, когда я только хочу C, 2, tuna
.
Я подумал о попытке сделать что-то вроде
select col1, col2, col3
from mytable
where
col1-n-col2 in (
select col1, max (col2) as mCol2
from mytable)
group by col1, col2
Но я не думаю, что это законно в SQL,Какое очевидное решение я упустил?