Учитывая следующую ситуацию:
CREATE TABLE IF NOT EXISTS `table1` (
`time` int(11) NOT NULL,
`aircraft` varchar(50) NOT NULL,
`height` int(11) NOT NULL
);
INSERT INTO `table1` (`time`, `aircraft`, `height`) VALUES
(1, 'klm', 605),
(2, 'klm', 603),
(3, 'klm', 705),
(6, 'klm', 505),
(1, 'klm2', 601),
(2, 'klm2', 605),
(3, 'klm2', 605),
(4, 'klm2', 705),
(5, 'klm2', 601),
(6, 'klm2', 301);
Как вернуть ровно 1 строку для каждого самолета, где высота наименьшая, а время меньше 6?Наименьшее время следует использовать, когда предыдущие условия возвращают несколько строк для самолета.
Ожидаемые результаты:
2, 'klm', 603
1, 'klm2', 601
Это очень большая база данных Apache Impala, поэтому производительность учитывается при рассмотрении этого решения.
Создана скрипка для тестирования (обратите внимание на скрипкуявляется mysql не impala): https://www.db -fiddle.com / f / cyKJ1GrfDZXAbhTpQZi7FP / 2