Вложенная оптимизация GROUP BY
У меня есть следующий запрос:
SELECT trip_id, MAX(cnt) FROM
(
SELECT trip_id, stop_id, COUNT(*) as cnt
FROM operation_ticket_part_stops
GROUP BY trip_id, stop_id
) AS t
GROUP BY trip_id
Результат (это результат, который я хочу):
trip_id MAX(cnt)
10072 2
10583 1
**10607 11**
10608 8
10609 13
10612 5
11170 1
11239 1
11675 30
...
Результат для подзапроса:
trip_id stop_id cnt
...
10607 11234 11
10607 11235 10
10607 11236 10
10607 11237 11
10607 11238 9
10607 11239 7
...
Есть ли способ избежать подзапроса здесь (и, возможно, оптимизировать?). База данных: MySQL
1 ответ
Решение
Что-то вроде этого
SELECT trip_id, stop_id, COUNT(*) as cnt
FROM operation_ticket_part_stops
GROUP BY trip_id, stop_id
ORDER BY cnt DESC
LIMIT 1
Этот запрос сортирует ваш подзапрос и принимает только первую запись (которая содержит тот же результат, что и Max)