したがって、3 つのテーブルを結合して作成した一時テーブルがあります。
- 旅行
- ストップ
- 停止時間
Stop_times テーブルには、trip_id、対応する停車地、およびそれらの停車地でのバスの予定到着時刻と出発時刻のリストがあります。
私はオンラインで検索しましたが、重複を削除する方法 (ctid、ネストされたクエリを使用) についての回答を見つけたようですが、それらを表示することはできませんでした。
私のクエリは次のようになります。
CREATE TEMP TABLE temp as
SELECT
(CASE st.arrival_time < current_timestamp::time
WHEN true THEN (current_timestamp::date + interval '1 day') + st.arrival_time
ELSE (current_timestamp::date) + st.arrival_time
END) as arrival,
CASE st.departure_time < current_timestamp::time
WHEN true THEN (current_timestamp::date + interval '1 day') + st.departure_time
ELSE (current_timestamp::date) + st.departure_time
END as departure, st.trip_id, st.stop_id, st.stop_headsign,route_id, t.trip_headsign, s.stop_code, s.stop_name, s.stop_lat, s.stop_lon
FROM schema.stop_times st
JOIN schema.trips t ON t.trip_id=st.trip_id
JOIN schema.stops s ON s.stop_id=st.stop_id
order by arrival, departure;
重複があることはわかっています(select *を実行し、tempでselect DISTINCTを実行することにより)、重複を特定する必要があるだけです...助けていただければ幸いです!
PS : DISTINCT を使用して重複を取り除くことができることはわかっていますが、クエリの速度が大幅に低下しているため、重複を特定する必要があるクエリを作り直す必要があります。結果のレコードは 200,000 を超えているため、それらをエクスポートしますExcelと重複のフィルタリングもオプションではありません(私は試しましたが、Excelはそれを処理できません)