2011-06-23 35 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

相关问题