【发布时间】:2014-06-07 09:19:54
【问题描述】:
数据库架构包括:
- 公司(ID_comp,名称)
- Trip(trip_no, id_comp, plane, town_from, town_to, time_out, time_in)
- Pass_in_trip(trip_no, date, ID_psg, place)
Company 表包含运送乘客的公司的 ID 和名称。行程表包含有关行程的信息:行程编号、公司 ID、飞机类型、出发城市、到达城市、出发时间和到达时间。 Pass_in_trip 表包含有关航班的信息:行程编号、出发日期(天)、乘客的 ID 和他在飞行中的位置。我们应该注意到, - 每天都在完成任何旅行;飞行时间少于一个日历日(24 小时); town_from town_to; - 时间和日期被认为是一个相对的时区; - 出发时间和到达时间都在一分钟内给出;
问:对于每家公司,找出公司的飞机在完成飞行期间所花费的时间。结果集:公司名称、时间(分钟)。
答:
select Z.name,
sum (
CASE
WHEN DATEDIFF(mi,time_out,time_in) <0
THEN DATEDIFF(mi,time_out,time_in) + 1440
ELSE DATEDIFF(mi,time_out,time_in)
END) as minutes
from (
select distinct C.name,T.trip_no, DATE ,time_out,time_in
from Pass_in_trip as Pt
JOIN Trip as T
ON T.trip_no=Pt.trip_no
JOIN Company as C
ON C.ID_comp = T.ID_comp
) Z
group by Z.name
谁能告诉我日期变量如何影响查询,我看不出它有多重要。但是,当您尝试删除(主查询)FROM 语句中的日期变量时,输出会有所不同。
【问题讨论】: