数据库架构包括:
公司表有公司的ID和名称,用于运送乘客。旅行表有关于旅行的信息:旅行号码,公司ID,飞机类型,出发城市,到达城市,出发时间和到达时间。 Pass_in_trip表包含有关航班的信息:旅行号码,出发日期(天),乘客的身份证以及他在飞行途中的位置。我们应该注意到, - 每天都有旅行;航班的持续时间少于一个日历日(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语句中的日期变量时,输出是不同的。
答案 0 :(得分:0)
因为您使用SELECT DISTINCT
而有所不同。如果您有两行具有相同的name, trip_no, time_out, time_in
,则DISTINCT会将它们组合在一起,如果您不区分它们date
。