반응형
Maria에서 그룹 식별자를 변경하는 방법DB
내 MariaDb에는 다음 표와 같은 표가 있으며 "그룹" 열을 만들어야 합니다(출력 참조).LOAD_DATE 순서대로 KEY_A와 KEY_B의 조합이 변경되면 그룹이 변경됩니다(출력 참조)."group" 열을 생성할 적절한 SQL을 찾을 수 없습니다.
마리아 DB에서 이 문제를 해결하는 방법을 알고 있는 사람이 있을 수도 있습니다.
테스트 데이터:
CREATE OR REPLACE TABLE test AS
SELECT 'AAA' AS KEY_A,'A' AS KEY_B,DATE('2010-01-01') AS LOAD_DATE
UNION
SELECT 'AAA' AS KEY_A,'B' AS KEY_B,DATE('2010-01-02')
UNION
SELECT 'AAA' AS KEY_A,'A' AS KEY_B,DATE('2010-01-03')
UNION
SELECT 'AAA' AS KEY_A,'A' AS KEY_B,DATE('2010-01-04')
UNION
SELECT 'BBB' AS KEY_A,'C' AS KEY_B,DATE('2010-01-04')
UNION
SELECT 'CCC' AS KEY_A,'D' AS KEY_B,DATE('2010-01-04') ;
출력:
KEY_A; KEY_B; LOAD_DATE; group
AAA; A; 2010-01-01; 1
AAA; B; 2010-01-02; 2
AAA; A; 2010-01-03; 3
AAA; A; 2010-01-04; 3
BBB; C; 2010-01-04; 1
CCC; D; 2010-01-04; 1
저는 이것이 격차와 섬의 문제라고 생각합니다.
창 기능으로 이 문제를 해결할 수 있습니다.
select t.*,
sum( case when key_b = prev_key_b then 0 else 1 end ) over (partition by key_a order by load_date) as grp
from (select t.*,
lag(key_b) over (partition by key_a order by load_data) as prev_key_b
from t
) t;
검정 데이터가 실제로 잘못 작성되었습니다.
테스트 데이터:
CREATE TABLE TestDB.test AS
SELECT 'AAA' AS KEY_A,'A' AS KEY_B, DATE('2010-01-01') AS LOAD_DATE FROM DUAL
UNION
SELECT 'AAA' AS KEY_A,'B' AS KEY_B, DATE('2010-01-02') AS LOAD_DATE FROM DUAL
UNION
SELECT 'AAA' AS KEY_A,'A' AS KEY_B, DATE('2010-01-03') AS LOAD_DATE FROM DUAL
UNION
SELECT 'AAA' AS KEY_A,'A' AS KEY_B, DATE('2010-01-04') AS LOAD_DATE FROM DUAL
UNION
SELECT 'BBB' AS KEY_A,'C' AS KEY_B, DATE('2010-01-04') AS LOAD_DATE FROM DUAL
UNION
SELECT 'CCC' AS KEY_A,'D' AS KEY_B, DATE('2010-01-04') AS LOAD_DATE FROM DUAL
;
언급URL : https://stackoverflow.com/questions/54697974/how-to-create-changing-group-identifier-in-mariadb
반응형
'programing' 카테고리의 다른 글
START_STICKY 및 START_NOT_STICKY (0) | 2023.08.25 |
---|---|
Python 쉘에 탭 완료를 추가하려면 어떻게 해야 합니까? (0) | 2023.08.25 |
Gradle: ':processDebugManifest' 작업을 실행하지 못했습니다. (0) | 2023.08.25 |
인증을 포함한 Python 요청(access_token) (0) | 2023.08.25 |
스크롤 가능한 div의 맨 위로 다시 스크롤합니다. (0) | 2023.08.25 |