찾다

 >  Q&A  >  본문

MySQL 5.7에서 연속된 값의 차이 추출

이름 날짜 시간 계산
밀스 2022-07-17 23 12
밀스 2022-07-18 00 15
밀스 2022-07-18 01 20
밀스 2022-07-18 02 22
밀스 2022-07-18 03 25
밀스 2022-07-18 04 20
밀스 2022-07-18 05 22
밀스 2022-07-18 06 25
마이크 2022-07-18 00 15
마이크 2022-07-18 01 20
마이크 2022-07-18 02 22
마이크 2022-07-18 03 25
마이크 2022-07-18 04 20

내 현재 입력 테이블에는 매 시간마다 지속적으로 기록된 카운트 정보가 저장됩니다. 연속된 카운트 값의 차이를 추출해야 하는데, MySQL 5.7을 강제로 사용하게 되면서 이렇게 하기가 어렵네요.

제가 작성한 쿼리는 다음과 같습니다.

으아아아

정확한 결과를 제공하지는 않습니다.

다음과 같은 결과를 얻고 싶습니다:

이름 날짜 시간 계산 차이
밀스 2022-07-17 23 12 0
밀스 2022-07-18 00 15 3
밀스 2022-07-18 01 20 5
밀스 2022-07-18 02 22 2
밀스 2022-07-18 03 25 3
밀스 2022-07-18 04 20 5
밀스 2022-07-18 05 22 2
밀스 2022-07-18 06 25 3
마이크 2022-07-18 00 15 0
마이크 2022-07-18 01 20 5
마이크 2022-07-18 02 22 2
마이크 2022-07-18 03 25 3
마이크 2022-07-18 04 20 5
마이크 2022-07-18 05 22 2
마이크 2022-07-18 06 25 3

제가 부족한 부분을 제안해주세요.

P粉216807924P粉216807924267일 전441

모든 응답(2)나는 대답할 것이다

  • P粉771233336

    P粉7712333362024-04-02 13:49:18

    다음을 시도해 보세요:

    으아아아

    db-fiddle에서 데모를 확인하세요.

    회신하다
    0
  • P粉569205478

    P粉5692054782024-04-02 11:29:09

    MySQL 5.7에서는 업데이트된 "Count" 값을 포함하도록 변수를 인라인으로 업데이트할 수 있습니다. "Name" 값이 변경되면 변수를 재설정해야 하므로 "Name"의 이전 값이 포함된 다른 변수를 사용할 수 있습니다. 그런 다음 IF 기능을 사용하여 다음을 확인하세요.

    • 이전 이름과 현재 이름이 같은 경우
    • 그런 다음 개수 차이를 계산하세요
    • 그렇지 않으면 0을 할당

    차이에 절대값을 적용하는 ABS 함수와 함께 작동합니다.

    으아아아

    데모를 여기에서 확인하세요.


    MySQL 8.0에서는 LAG과 같은 것을 사용하여 원활하게 출력할 수 있습니다. 다음과 함께 작동합니다:

    • ABS 절대차이값을 적용하고,
    • COALESCE은 첫 번째 null 값을 제거하는 데 사용됩니다.
    으아아아

    데모를 여기에서 확인하세요.

    회신하다
    0
  • 취소회신하다