>  Q&A  >  본문

"특정 날짜 범위 내의 유효한 레코드에 대한 SQL 쿼리"

<p>출석관리 작업을 하고 있습니다. 체크인과 체크아웃은 테이블</strong></p>에서 서로 다른 두 가지 기록입니다. <p>누군가가 며칠 동안 로그아웃하지 않았을 가능성이 있지만 당일 출석으로 간주되어야 합니다</p> <pre class="brush:php;toolbar:false;">직원 ID - 체크인 시간 - 체크아웃 시간 3842 2022년 12월 17일 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 2022년 12월 17일 08:00 -- 2022년 12월 17일 17:45 (단순 당일) 3844 2022년 12월 17일 22:00 -- 2022년 12월 18일 6:40 (자정을 통과하는 경우 - 12월 17일 및 12월 18일을 계산해야 함) 내가 원하는 결과는 12/15 1명 12/17 4명 12/18 2명</pre> <p>X일에 몇 명이 참석했는지 알고 싶습니다</p> <p>두 개의 다른 기록(체크인 및 체크아웃)을 처리하는 방법이나 하나의 기록(체크인)만 처리하는 방법이 약간 혼란스럽습니다</p> <pre class="brush:php;toolbar:false;">CREATE TABLE `my_history`( `id` int(11) NOT NULL AUTO_INCREMENT, `person_id` int(11) 기본 NULL, `action` varchar(24) DEFAULT 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;">`my_history`에 삽입( `person_id`, `action`, `when_created`) 가치 (3842, 'checked_in', '2022-12-15 08:00:00'), (3842, 'checked_out', '2022-12-15 09:30:00'), (3842, 'checked_in', '2022-12-17 09:30:00'), (3843, 'checked_in', '2022-12-17 08:00:00'), (3843, 'checked_out', '2022-12-17 09:30:00'), (3843, 'checked_in', '2022-12-17 11:00:00'), (3843, 'checked_out', '2022-12-17 13:30:00'), (3841, 'checked_in', '2022-12-17 08:00:00'), (3841, 'checked_out', '2022-12-17 17:42:00'), (3844, 'checked_in', '2022-12-17 22:00:00'), (3844, 'checked_out', '2022-12-18 06:40:00'); 테이블 만들기 사람( 아이디INT(11) ) 에 집어 넣다 사람 가치 (3841), (3842), (3843), (3844)</pre></p>
P粉884667022P粉884667022416일 전566

모든 응답(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
  • 취소회신하다