Подсказка: задача состоит из двух подзадач:
- Выбрать уникальные имена из первой колонки.
- Выбрать первую запись из отсортированной таблицы для каждого такого имени.
Первая подзадача решается с помощью DISTINCT, а вторая с помощью FIRST.
UPD. Подсказки оказались так себе. Ох, и намучился я с этой штукой.
Вот решение: http://www.sqlfiddle.com/#!18/d8697/17
СREATE TABLE khrntn(
Col1 varchar(55),
Col2 varchar(55),
Col3 int
);
INSERT INTO khrntn VALUES
('avtobus', 'slon', 1),
('avtobus', 'zemelya', 2),
('avtobus', 'mashina', 2),
('avtobus', 'ivanov', 1),
('chelovek', 'slon' , 1),
('chelovek', 'ivanov' , 1),
('chelovek', 'zemelya' , 1),
('chelovek', 'mashina' , 1);
Решение:
SELECT Col1 AS NCol1, MIN(Col2) AS NCol2, MCol3 AS NCol3
FROM khrntn INNER JOIN (SELECT Col1 AS MCol1, MAX(Col3) AS MCol3
FROM khrntn
GROUP BY Col1) AS M ON Col1=MCol1 AND Col3=MCol3
GROUP BY Col1, MCol3
ORDER BY Col1;
Результат:
NCol1 NCol2 NCol3
avtobus mashina 2
chelovek ivanov 1