У меня есть подача GTFS, и я пытаюсь определить тип остановки (bus
, tram
или multiple
в моем случае) с использованием SQL. Для этого мне нужно получить все маршруты на каждой остановке и сравнить поле route.route_type
, в котором содержится информация о типе маршрута (0
- трамвай, 3
- автобус).
Вот мой запрос:
SELECT stop.stop_id, route.route_type from stop
INNER JOIN stop_time on stop_time.stop_id = stop.stop_id
INNER JOIN trip on trip.trip_id = stop_time.trip_id
INNER JOIN route on route.route_id = trip.route_id
GROUP BY stop.stop_id, route.route_type
ORDER BY stop.stop_id, route.route_type
Этот запрос возвращает:
stop_id,route_type
1,0
1,3
2,0
3,3
Это означает, что stop_id = 1 имеет:
- автобусных маршрутов,
- трамвайных маршрутов.
stop_id = 2 имеет только трамвайные маршруты.
stop_id = 3 имеет только автобусные маршруты.
Я хотел бы вернуться:
stop_id,stop_type
1,multiple
2,tram
3,bus
А может быть, даже проще было бы изменить только те остановки, на которых есть автобусные и трамвайные маршруты. Так будет примерно так:
stop_id,stop_type
1,-1
2,0
3,3
Как этого добиться? Я не уверен, но думаю, что мне нужно посчитать количество строк на stop_id и затем каким-то образом изменить результат, но я не знаю, как это сделать.