【问题标题】:SQL Calculating time/date in query exampleSQL 在查询示例中计算时间/日期
【发布时间】:2014-06-07 09:19:54
【问题描述】:

数据库架构包括:

  1. 公司(ID_comp,名称)
  2. Trip(trip_no, id_comp, plane, town_from, town_to, time_out, time_in)
  3. 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 语句中的日期变量时,输出会有所不同。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    因为您使用了SELECT DISTINCT,所以会有所不同。如果您有两行具有相同的name, trip_no, time_out, time_in,如果您不通过date 区分它们,DISTINCT 会将它们合并。

    【讨论】:

    • 你能告诉我这个符号吗?日期。我不明白为什么用它来查找完成的航班
    • 这是pass_in_trip 表中的一列。它没有任何其他意义。
    • 但是为什么用它来查找完成的航班,我真的不明白为什么你必须加入所有这些表格
    • 我不太了解你的设计。 pass_in_trip 表是关于乘客的,为什么该表中的行程日期不在trip 表中?
    • 这是一个我正在尝试解决的在线 sql 问题。该模式不是由我设计的,但我认为它与乘客更相关,因为它告诉他们什么时候去旅行。由于每个表都应该有唯一的列(变量),因此您可以轻松地将其与 Trip 表连接起来以查找旅行日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多