【发布时间】:2019-05-31 11:15:40
【问题描述】:
我需要计算按品牌分组的汽车的平均租赁时间。
为简单起见,我的数据库中有以下LEASE 表:
carMake | startDateTime | endDateTime
我未完成的 SQL 查询如下所示:
SELECT lease.carMake
FROM lease
WHERE lease.startDateTime <= {?endDate} AND lease.endDateTime >= {?startDate}
SUM ... ???
GROUP BY lease.carMake ;
例子:
carMake | startDateTime | endDateTime
MB 01.01.2018 00:00 01.01.2019 00:00
BMW 07.06.2018 21:00 01.01.2019 00:00
MB 06.06.2018 00:00 07.06.2018 00:00
查询范围在 06.06.2018 和 07.06.2018 之间的结果:
carMake | avgTime
MB 36 hours
BMW 3 hours
数据库是 PostgreSQL
【问题讨论】:
-
请提供样本数据、所需结果以及您正在使用的数据库的标签。
-
什么是 36 和 3?几天或几个月还是什么?
-
小时,BMW是21:00开始租的,因为只重叠了3个小时
-
您不会求和,而是平均(平均)天*24+24 的差异。您如何做到这一点因供应商而异。您的语法不知道您的后端是什么。以postgreSQL为例:select carMake, avg(extract(epoch from (endDate-startDate))/3600 + 24) as hours from leases group by carMake;
-
嗨 Cetin,我使用的是 PostgreSQL,只是找不到标签。 avg(extract(epoch from (endDate-startDate))/3600 + 24) 而且我还必须考虑每辆车的 Math.max(startDateTime when car is Rented, startDate Query) 和 endDateTime 相同
标签: sql postgresql date datetime