我有一张表,约会中包含以下信息
姓名,日期,类型(预约)
我想弄清楚每个姓名的约会之间的天数差异。有些名字可能只有1个约会,有些可能有50个。我想要的是每次约会之间的平均天数。
我已经尝试了内连接,创建了一个临时表,并且在StackOverflow上没有使用任何一个答案,但似乎都没有。
我的最新版本是:
SELECT A.Name, A.Date, (B.Date - A.Date) AS timedifference
FROM Appointments A CROSS JOIN Appointments B
WHERE B.Name IN (SELECT MIN(C.Date) FROM Appointments C WHERE C.Date > A.Date)
ORDER BY A.Name ASC
但这超出了我的网页。
有人可以帮忙吗?
谢谢, 克莱尔
答案 0 :(得分:2)
您可以使用子查询来计算日期之间的UNIX_TIMESTAMP差异
然后按name
从秒转换为天。
SELECT (SELECT ( Unix_timestamp() - Sum(Unix_timestamp(`date`)) / Count(*) ) /
60 / 60 / 24
FROM `appointments`
WHERE `name` = `ap`.`name`
GROUP BY `name`) AS `daydiff`,
`ap`.`name`
FROM `appointments` `ap`
GROUP BY `name`
看看这个SQLFiddle: http://sqlfiddle.com/#!2/85c19/7