ホームページ  >  に質問  >  本文

「特定の日付範囲内の有効なレコードを求める SQL クエリ」

<p>勤怠管理に取り組んでいます。チェックインとチェックアウトは、テーブル内の 2 つの異なるレコードです</strong></p> <p>誰かが数日間サインアウトしなかった可能性もありますが、その日の出席としてカウントされる必要があります</p> <pre class="brush:php;toolbar:false;">担当者 ID - チェックイン時間 - チェックアウト時間 3842 12/17/2022 09:030 -- チェックアウトなし (2022 年 12 月 17 日以降は毎日カウントされる必要があります) 3843 2022/12/17 08:00 -- 2022/12/17 09:30 (以下同日) 3843 2022/12/17 11:00 -- 2022/12/17 13:30 (上記は同日) 3841 12/17/2022 08:00 -- 12/17/2022 17:45. (簡易同日) 3844 12/17/2022 22:00 -- 12/18/2022 6:40 (真夜中を過ぎる - 12/17 と 12/18 をカウントする必要があります) 私の望む結果は 12/15 1名 12/17 4名 12/18 2名</pre> <p>X 日に何人出席するかを知りたいです</p> <p>2 つの異なるレコード (チェックインとチェックアウト) または 1 つのみのレコード (チェックイン) を処理する方法が少しわかりません</p> <pre class="brush:php;toolbar:false;">CREATE TABLE `my_history` ( `id` int(11) NOT NULL AUTO_INCREMENT、 `person_id` int(11) デフォルト NULL、 `アクション` varchar(24) デフォルト NULL、 `when_created` タイムスタンプ NULL DEFAULT CURRENT_TIMESTAMP, 主キー (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;</pre> <p>一部の挿入ステートメント</p> <pre class="brush:php;toolbar:false;">INSERT INTO `my_history` (`person_id`、`action`、`when_created`) 価値観 (3842, 'チェックイン', '2022-12-15 08:00:00'), (3842, 'チェックアウト', '2022-12-15 09:30:00'), (3842, 'チェックイン', '2022-12-17 09:30:00'), (3843, 'チェックイン', '2022-12-17 08:00:00'), (3843, 'チェックアウト', '2022-12-17 09:30:00'), (3843, 'チェックイン', '2022-12-17 11:00:00'), (3843, 'チェックアウト', '2022-12-17 13:30:00'), (3841, 'チェックイン', '2022-12-17 08:00:00'), (3841, 'チェックアウト', '2022-12-17 17:42:00'), (3844, 'チェックイン', '2022-12-17 22:00:00'), (3844, 'チェックアウト', '2022-12-18 06:40:00'); CREATE TABLE 人 ( idINT(11) ) に挿入 人 価値観 (3841)、 (3842)、 (3843)、 (3844)

;
P粉884667022P粉884667022416日前570

全員に返信(2)返信します

  • P粉253800312

    P粉2538003122023-09-01 09:56:28

    通常、この状況をテストするには、関心のある日付がチェックイン日より後であり、チェックアウト日より小さいかどうかを確認する必要があります。例えば### リーリー

    チェックアウト日が空でも「OK」になる状況を解決するには、空の値を条件を満たす値に置き換えるだけです。

    リーリー

    返事
    0
  • P粉317679342

    P粉3176793422023-09-01 09:17:04

    要件の変更により、古い回答は削除されました。急いでいたので説明する時間がありませんでした。

    リーリー

    https://dbfiddle.uk/RXx0x9xt

    返事
    0
  • キャンセル返事