约会
问题描述:
我有一个表,约会之间制定出天持有以下信息约会
名称,日期,类型
我想任命为每间工作在几天之差(任命)名称。有些名字可能只有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
但是,超时我的网页。
任何人都可以帮忙吗?
感谢, 克莱尔
答
你可以使用一个子查询,计算日期 之间的差异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
所以日期是UNIXTIME? – Strawberry 2014-12-04 10:34:13
如果您喜欢,请考虑遵循以下简单的两步操作步骤:1.如果您尚未这样做,请提供适当的DDL(和/或sqlfiddle),以便我们可以更轻松地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry 2014-12-04 10:35:08
日期为mysql中的DATE格式,我非常抱歉,但我不知道如何执行DDL和/或sqlfiddle。 下面是想什么,我实现一个例子: 约翰·史密斯2014年1月3日理发 约翰·史密斯18/3/2014 BeardTrim 约翰·史密斯2014年6月4日理发 约会1之间的天数2 17天之间,2和3之间19天,所有约会之间的平均时间18天 – Claire 2014-12-04 10:43:40