SQL计算查询示例中的时间/日期

时间:2014-06-07 01:14:52

标签: mysql sql

数据库架构包括:

  1. 公司(ID_comp,姓名)
  2. 旅行(trip_no,id_comp,plane,town_from,town_to,time_out,time_in)
  3. Pass_in_trip(trip_no,date,ID_psg,place)
  4. 公司表有公司的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语句中的日期变量时,输出是不同的。

1 个答案:

答案 0 :(得分:0)

因为您使用SELECT DISTINCT而有所不同。如果您有两行具有相同的name, trip_no, time_out, time_in,则DISTINCT会将它们组合在一起,如果您不区分它们date

相关问题