次のようにMySQLにテーブルがあります。
+----+--------+------------------+------+
| id | userid | fecha_ingreso | tipo |
+----+--------+------------------+------+
| 1 | 1 | 2015-06-08 20:00 | 1 |
| 3 | 1 | 2015-06-09 05:00 | 2 |
| 18 | 2 | 2015-06-09 23:30 | 1 |
| 19 | 2 | 2015-06-10 05:00 | 2 |
| 20 | 2 | 2015-06-10 06:00 | 1 |
| 21 | 2 | 2015-06-10 09:00 | 2 |
| 22 | 1 | 2015-06-09 23:30 | 1 |
| 23 | 1 | 2015-06-10 05:00 | 2 |
| 24 | 1 | 2015-06-10 06:00 | 1 |
| 25 | 1 | 2015-06-10 09:00 | 2 |
+----+--------+------------------+------+
10 rows in set
このテーブルにはuserid
、仕事に出入りする ( ) すべてのユーザー ( )の情報がありますfecha_ingreso
。たとえば、userid=1
has enter( tipo=1
) at'2015-06-08 20:00'
で hes は 仕事を辞めました'2015-06-09 05:00'
。
次に、userid=2
( ) に ( ) に ( tipo=1
) に就職し、 で朝食をとるために'2015-06-09 23:30'
( ) に仕事を辞め、 に再び入社し、最終的に に仕事を辞めた人がいます。tipo=2
'2015-06-10 05:00'
'2015-06-10 06:00'
'2015-06-10 09:00'
次のようなものだけを表示するクエリを作成できません。
+--------+------+---------------------+---------------------+-----------------+
| userid | INS | OUTS | time_after_22pm_and_lessOrEqual6am |
+--------+------+---------------------+---------------------+-----------------+
| 1 | 2015-06-25 15:00:00 | 2015-06-26 23:15:00| 01:15:00
| 2 | 2015-06-25 23:00:00 | 2015-06-26 13:30:00| 07:00:00
+--------+------+---------------------+---------------------+-----------------+
2 rows in set
これは私が必要とする出力です。ユーザーが複数の出入りをする可能性がある場合でも、22:00 から翌日の午前 6 時までの範囲で何時間、何分、何秒働いたかを示す追加の列を使用して、最初の入場日時と最後の退場日時を表示する必要があります。 .
ティム、あなたのクエリは完璧ですが、ほぼ近いです。ただし、ユーザーが午後 22 時以降の場合 (私のサンプルが示すように)、時間: 分: 秒を取得する方法がわかりません。