Mysql 查询示例中的SQL计算时间/日期
数据库架构包括:Mysql 查询示例中的SQL计算时间/日期,mysql,sql,Mysql,Sql,数据库架构包括: 公司(身份证、公司名称) 行程(行程号、身份证、公司、飞机、出发地、目的地、超时、入境时间) 通过行程(行程编号、日期、ID、地点) Company表具有运送乘客的公司的ID和名称。行程表包含有关行程的信息:行程编号、公司ID、飞机类型、出发城市、到达城市、出发时间和到达时间。Pass_in_trip table包含航班信息:航班号、出发日期(天)、乘客ID和航班期间的位置。应该看到,, -每天都在完成任何一次旅行;航班持续时间少于一个日历日(24小时);从镇到镇; -时间和日
选择Z.name,
总和(
案例
DATEDIFF时(mi、超时、超时)这会有所不同,因为你使用选择DISTINCT
。如果你有两行名称相同的行,trip\u no,time\u out,time\u in
,DISTINCT会将它们组合在一起,如果你不通过日期来区分它们,那么DISTINCT也可以告诉我日期的符号。我不明白为什么用它来查找完成航班。这是一列在pass\u in\u trip
表中。它没有任何其他意义。但是为什么用它来查找完成航班,我真的不明白你为什么要加入所有这些表。我真的不理解你的设计。pass\u in\u trip
表是关于乘客的,为什么旅行日期在该表中,而不是在trip
ta中ble?这是我试图解决的一个在线sql问题。该模式不是我设计的,但我认为它与乘客的关系更密切,因为它能告诉他们什么时候去旅行。由于每个表都应该有唯一的列(变量),您可以很容易地将其与旅行表连接以查找旅行日期。
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