У меня небольшая проблема с 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's ARR_DT И DC_DT> current_row's ARR_DT
Чтобы получить результат, например, для экспорта в сводную таблицу Excel.
mysql_id | Name | ARR_DT_unix | DC_DT_unix | Number_In_department
Но это проходит всю базу данных для каждой строки и сильно загружает процессор. Есть ли лучшее решение для этой проблемы.
Вот что я сейчас пытаюсь сделать, но у меня неправильные результаты
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;
Что было бы лучшим вариантом для этой проблемы?
Спасибо,
Marko