각 행에 대해 두 번째 초 최고 값 가져 오기

체페 :

일부 설정으로 구성된 컴퓨터가 있다고 가정 해 보겠습니다. 이러한 설정은 수시로 변경되며 만료 날짜는 데이터베이스에 저장됩니다. 한 설정의 만료 날짜는 동시에 새 설정의 시작 시간입니다. 다음 표가 주어지면

id          machineId              expiringDate
1           1                      2020-08-21 12:56:14
2           1                      2020-08-21 13:43:23
3           1                      2020-08-24 07:38:07
4           1                      NULL
5           2                      NULL
6           3                      2020-08-21 11:50:39
7           3                      NULL

어떻게 다음과 같은 결과로 올 수 startDate는 IS expiringDate기계에서 이전 항목 및 startDatenull더 이전 항목이없는 경우

id          machineId      expiringDate             startDate
1           1              2020-08-21 12:56:14      NULL
2           1              2020-08-21 13:43:23      2020-08-21 12:56:14
3           1              2020-08-24 07:38:07      2020-08-21 13:43:23
4           1              NULL                     2020-08-24 07:38:07
5           2              NULL                     NULL  
6           3              2020-08-21 11:50:39      NULL
7           3              NULL                     2020-08-21 11:50:39

지금까지 전체 테이블에서 두 번째로 높은 값을 얻을 수 있었지만 모든 클래스와 모든 행에 대해 수행하는 방법에 대한 단서가 없습니다.

MySQL 버전 5.17.19

Tim Biegeleisen :

MySQL 5.7 또는 이전 버전을 사용하는 경우 여기에서 상관 하위 쿼리를 사용하여 만료 날짜의 지연을 찾을 수 있습니다.

SELECT
    id,
    machineId,
    expiringDate,
    (SELECT t2.expiringDate FROM yourTable t2
     WHERE t2.machineId = t1.machineId AND t2.id < t1.id
     ORDER BY t2.id DESC LIMIT 1) startDate
FROM yourTable t1
ORDER BY
    machineId,
    id;

id | machineId | expiringDate        | startDate          
---+-----------+---------------------+-------------------
 1 |         1 | 2020-08-21 12:56:14 | null              
 2 |         1 | 2020-08-21 13:43:23 | 2020-08-21 12:56:14
 3 |         1 | 2020-08-24 07:38:07 | 2020-08-21 13:43:23
 4 |         1 | null                | 2020-08-24 07:38:07
 5 |         2 | null                | null               
 6 |         3 | 2020-08-21 11:50:39 | null               
 7 |         3 | null                | 2020-08-21 11:50:39

데모

MySQL 8 이상을 사용하는 경우 LAG분석 기능을 사용할 수 있습니다.

SELECT
    id,
    machineId,
    expiringDate,
    LAG(expiringDate) OVER (PARTITION BY machineId ORDER BY id) startDate
FROM yourTable
ORDER BY
    machineId,
    id;

위 쿼리의 두 버전 모두 지연이 나타나는 순서로 만료 날짜를 사용할 수 없다는 점에 유의하십시오.이 값 자체가 없을 수도 있고 NULL순서가 없을 수도 있기 때문 입니다. 따라서 대신 id값을 사용 하면 지연 값을 찾기 위해 여기에서 원하는 순서가 생성됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

dataframe의 각 행에 대해 다른 두 값 사이의 값을 가져 오기

해시 맵에서 첫 번째, 두 번째, 세 번째 최소값 찾기

Bash의 첫 번째 열에있는 각 고유 값에 대한 n 번째 열의 최대 값 찾기

막대 차트의 각 y 축에 대해 고유 한 최대 값 가져 오기

각 행 (pandas)에 대해 두 번째 최대 값이있는 열 이름을 찾습니다.

각 행에서 첫 번째 또는 두 번째 값 빼기

다중 인덱스-각 첫 번째 인덱스에 대해 최대 두 번째 인덱스 가져 오기

r의 데이터 프레임에서 각 행의 첫 번째, 두 번째 및 세 번째 최대 값과 해당 열 이름을 찾습니다.

행 현명한 첫 번째 및 두 번째 최대 이름 가져 오기

SQL 문-조인에서 첫 번째 최소값, 두 번째 최소값 가져 오기

각 그룹 SQL에 대한 첫 번째 행 가져 오기

Oracle에서 각 값에 대해 두 번째로 높은 최대 값 얻기

QTableview 체크 항목, 해당하는 두 번째 열에서 값 가져 오기

두 번째 열에 종속 된 고유 값의 백분율 가져 오기

첫 번째 테이블에서 일치하는 값에 대해 두 번째 및 세 번째 테이블에서 값 가져 오기

두 번째 내부 배열에서 두 값 가져 오기

두 번째 조각에서 다시 가져 오려고 할 때 값이 사라집니다.

python-사전에서 두 번째 및 세 번째 최대 값으로 키 가져 오기

각 열을 정렬하고 하위 2 개 값의 첫 번째 행에서 해당 키 ID 가져 오기

n 번째 열을 기준으로 데이터를 정렬하고, n 번째 행의 행 이름을 가져오고, 각 열에 대해 수행합니다.

R에서 DF의 각 행에 대해 가장 큰 최대 값과 두 번째로 큰 최대 값 찾기

행을 여러 셀로 분할하고 각 유전자에 대한 두 번째 값의 최대 값 유지

두 번째 테이블을 기반으로 각 그룹에 대한 최대 값의 레코드 가져오기

첫 번째 쿼리로 각 스레드의 첫 번째 값을 가져오고 값을 사용하여 두 번째 쿼리를 수행합니다.

텐서에서 각 행의 최대값 가져오기 [PyTorch]

각 요소에 대한 첫 번째 앵커의 href 값 가져오기

SQL 두 열에 대해 최대값이 있는 행 가져오기

각 고유 ID에 대해 마지막으로 변경된 열 값의 첫 번째 발생 가져오기

ID별로 그룹화한 두 번째 최대값 가져오기

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관