2011-06-23 32 views
0

對不起,我不確定如何總結它。排除其中一列中的最大值用於檢查另一列中的值的行嗎?

我正在使用幾個表中提供給我的一些靜態列車時刻表數據。我試圖顯示所有在特定車站停留的列車,不包括那些在指定車站結束的列車。例如,列出在NYPenn車站停靠的所有列車時,我不希望那些列車在NYPenn車站終止。

相關的表是:

trips - 列表中的所有車次的每一天進行。每次旅行都有一個trip_id並由一個或多個站點組成。它還包含一個trip_headsign列,顯示列車的最終目的地,但是顯示爲文本(不是ID)。

+----------+------------+---------+-------------------------+--------------+----------+----------+ 
| route_id | service_id | trip_id | trip_headsign   | direction_id | block_id | shape_id | 
+----------+------------+---------+-------------------------+--------------+----------+----------+ 
|  1 |   1 |  1 | PRINCETON RAIL SHUTTLE |   1 |  603 |  1 | 
|  1 |   2 |  2 | PRINCETON RAIL SHUTTLE |   1 |  603 |  2 | 
+----------+------------+---------+-------------------------+--------------+----------+----------+ 

stop_times - 列出每列火車的每一站。在同一趟旅程中所有站點共享trip_id,所以這是我LEFT JOIN。此表還有一個名爲stop_sequence的列,範圍從1到n,其中n是該行程的總停靠點數。火車始發於stop_sequence=1。該值的範圍從2至26

+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+ 
| trip_id | arrival_time | departure_time | stop_id | stop_sequence | pickup_type | drop_off_type | shape_dist_traveled | 
+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+ 
|  1 | 21:15:00  | 21:15:00  | 24070 |    1 |   0 |    0 |     0 | 
|  1 | 21:25:00  | 21:25:00  | 41586 |    2 |   0 |    0 |    2.5727 | 
+---------+--------------+----------------+---------+---------------+-------------+---------------+---------------------+ 

這種特殊列車使得只有兩個停止位置。最後一站(41586)是頭條列中列出的內容(注意它與stop_name不匹配)。

+---------------+---------+---------+-------------------------+----------+----------------+ 
| stop_sequence | stop_id | trip_id | trip_headsign   | block_id | departure_time | 
+---------------+---------+---------+-------------------------+----------+----------------+ 
|    1 | 24070 |  1 | PRINCETON RAIL SHUTTLE |  603 | 21:15:00  | 
|    2 | 41586 |  1 | PRINCETON RAIL SHUTTLE |  603 | 21:25:00  | 
+---------------+---------+---------+-------------------------+----------+----------------+ 

+---------+----------------------------+-----------+-----------+------------+---------+ 
| stop_id | stop_name     | stop_desc | stop_lat | stop_lon | zone_id | 
+---------+----------------------------+-----------+-----------+------------+---------+ 
| 41586 | PRINCETON RAILROAD STATION |   | 40.343398 | -74.659872 |  336 | 
+---------+----------------------------+-----------+-----------+------------+---------+ 

所以,再次,就是我希望做的是顯示所有停靠在除了那些終止在有關車站特定站列車的列表。我寫了這樣做是查詢(在這種情況下,stop_id 105這是紐約Penn車站):

select stop_sequence, trips.trip_id, trip_headsign, trips.block_id, departure_time from rail_data.trips left join rail_data.stop_times on trips.trip_id = stop_times.trip_id where stop_id = '105' order by departure_time asc;

這將返回的結果是這樣的:

+---------------+---------+-----------------------+----------+----------------+ 
| stop_sequence | trip_id | trip_headsign   | block_id | departure_time | 
+---------------+---------+-----------------------+----------+----------------+ 
|   18 | 1342 | NEW YORK PENN STATION |  6600 | 05:43:00  | 
|    1 | 1402 | SUMMIT    |  6305 | 06:07:00  | 
|   16 | 1328 | NEW YORK PENN STATION |  6604 | 06:34:00  | 
|    1 | 1391 | SUMMIT    |  6307 | 06:41:00  | 
|   19 | 1360 | NEW YORK PENN STATION |  6908 | 06:47:00  | 
+---------------+---------+-----------------------+----------+----------------+ 

在這種情況下,我只希望前往SUMMIT的列車出現。但是記住,我不能簡單地說其中stop_sequence> 1,因爲我想包括火車,可能是第二,第三等站 - 只是沒有的最後一站。

在此先感謝您的幫助!

回答

0

您可以查詢stop_times,檢查其shape_dist_traveled == 0,並採取相應的「之旅ID」然後查詢車次與此ID表。所以,你必須添加一個其中:

其中trips.trip_id中(從stop_times ST選擇st.trip_id其中st.shape_dist_traveled == 0)

PS:我以爲shape_dist_travelled會給行駛的距離由火車

+0

可惜shape_dist_traveled只是0的首站,我不想排除。 – ehed

相關問題