0
值我有一个MySQL的 我有数据库(Arr_Times)一个小问题,下面列 Mysql_id 名称 ARR_DT(到达日期时间) DC_DT(出发日期时间)子查询与来自同一行
Mysql_id | Name | ARR_DT | DC_DT
1 |Doe, Jane | 2011-08-01 00:02:00 | 2011-08-01 13:32:00
2 |Doe, John | 2011-08-01 00:23:00 | 2011-08-01 18:32:00
3 |Smith, Peter | 2011-08-01 00:12:00 | 2011-08-01 08:38:00
4 |Unknown, Jane | 2011-08-01 13:03:00 | 2011-08-01 14:02:00
5 |Day, Doris | 2011-08-01 10:10:00 | 2011-08-01 13:32:00
6 |Bergman, Ingrid | 2011-08-01 11:35:00 | 2011-08-01 13:59:00
7 |Jones, Tom | 2011-08-01 00:12:00 | 2011-08-01 22:49:00
8 |Schubert, Mark | 2011-08-01 18:45:00 | 2011-09-01 02:22:00
9 |Doe, Jane | 2011-08-01 23:04:00 | 2011-010-01 03:32:00
一般有约。每天150-220行,出发时间可以从抵达时间后48小时。 我试图找出有多少人是在部门中任何给定的时间
因为当人到达与规则例如自动计算部门各行的人:算大家谁ARR_DT < = CURRENT_ROW的ARR_DT和DC_DT> CURRENT_ROW的ARR_DT 要有结果,例如要导出到Excel数据透视表。
mysql_id | Name | ARR_DT_unix | DC_DT_unix | Number_In_department
但是,这贯穿整个数据库的每一行,并且高度耗费CPU。有没有更好的解决方案来解决这个问题。
以下是什么我目前在尝试,但我有不正确的结果
SELECT
T1.mysql_id,
T1.Name,
FROM_UNIXTIME(T1.ARR_DT_unix) AS ARR_DT,
FROM_UNIXTIME(T1.DC_DT_unix) AS DC_DT,
(SELECT count(T2.mysql_id) FROM dates T2 WHERE T1.ARR_DT_unix <= T2.ARR_DT_unix AND T1.DC_DT_unix > T2.ARR_DT_unix) AS Person_Count
FROM
dates T1
INNER JOIN
dates T2
ON T1.mysql_id = T2.mysql_id
ORDER BY T1.ARR_DT_unix;
什么将是解决这一问题的最佳选择?
感谢, 马尔科