1

大家好,我正在与 postgres 合作以获得结果对,但我得到了重复的记录。我得到类似的东西:

stop_name|departure_time
------------------------
AAA      | 16489646
BBB      | 16465464
AAA      | 46546665
AAA      | 18421654
BBB      | 16849685
AAA      | 56496865

我期待类似的东西:

stop_name|departure_time
------------------------
AAA      | 16489646
BBB      | 16465464

因为有点复杂,所以我在这里做了一个小提琴,您可以在其中看到架构示例和我正在使用的查询。有人可以伸出援助之手来达到预期的效果吗?谢谢。

4

1 回答 1

3

我认为您只需要使用MIN聚合:

SELECT s.stop_name, min(st.departure_time) departure_time
  FROM stops s
    INNER JOIN stop_times st
      ON s.stop_id = st.stop_id
    INNER JOIN (
      SELECT DISTINCT t.trip_id, t.route_id
        FROM trips t, northbound nb
        WHERE t.trip_id LIKE CONCAT(nb.train_id,'%')
        AND t.route_id = '2'
    ) TR
      ON TR.trip_id = st.trip_id
WHERE st.departure_time > 1373948273
GROUP BY s.stop_name 
于 2013-07-16T22:34:33.060 回答