複数の列を持つものがありますが、table.a
ケースで重要なのは 3 つだけです。
私はこのクエリを得ました:time_stamp
employee_number
station_id
SELECT checktime AS time_stamp, userid AS employee_number, SN AS station_id
FROM checkinout;
この情報を取得するには:
+---------------------+-----------------+---------------+
| time_stamp | employee_number | station_id |
+---------------------+-----------------+---------------+
| 30/05/2015 8:01:07 | 5 | 6068144700170 |
| 31/05/2015 8:05:17 | 2 | 6068144700170 |
| 31/05/2015 17:03:47 | 2 | 6068144700170 |
| 31/05/2015 22:03:24 | 13 | 6068144700170 |
| 01/06/2015 02:30:34 | 13 | 6068144700170 |
| 01/06/2015 03:24:33 | 13 | 6068144700170 |
| 01/06/2015 07:14:24 | 13 | 6068144700170 |
| ... | ... | ... |
+---------------------+-----------------+---------------+
そして、私が必要としているのは、20 時間間隔ごとにそれぞれをtype
順番にstatus
分類することです。なぜ毎日ではないのですか?一部の従業員は夜に労働を開始し、他の日の朝に終了するため. employee.a のタイムスタンプが 1 つの場合は t=0/s=I、employee.a のタイムスタンプが 2 つの場合は t=0/s=I - t=0/s= のように、カウントで
分類する必要があります。 O、employee.a のタイムスタンプが 3 つの場合、t=0/s=I - t=2/s=O - t=0/s=O、employee.a のタイムスタンプが 4 つの場合、t=0/s= I - t=2/s=O - t=2/s=I - t=0/s=O...
必要な出力の例:time_stamp
employee_number
time_stamp
+---------------------+-----------------+---------------+---------+-----------+
| time_stamp | employee_number | station_id | type_id | status_id |
+---------------------+-----------------+---------------+---------+-----------+
| 30/05/2015 8:01:07 | 5 | 6068144700170 | 0 | I |
| 31/05/2015 8:05:17 | 2 | 6068144700170 | 0 | I |
| 31/05/2015 17:03:47 | 2 | 6068144700170 | 0 | O |
| 31/05/2015 22:03:24 | 13 | 6068144700170 | 0 | I |
| 01/06/2015 02:30:34 | 13 | 6068144700170 | 2 | O |
| 01/06/2015 03:24:33 | 13 | 6068144700170 | 2 | I |
| 01/06/2015 07:14:24 | 13 | 6068144700170 | 0 | O |
| ... | ... | ... | ... | ... |
+---------------------+-----------------+---------------+---------+-----------+
この質問は私を助けますが、問題を完全には解決しませんでした:
MySQL: Get start & end timestamp for each day
Mysql Show records where timestamp interval is lower than 4 minutes