집 >데이터 베이스 >MySQL 튜토리얼 >창 함수를 사용하여 PostgreSQL의 인접한 행 사이에서 데이터 이상 현상을 효율적으로 찾으려면 어떻게 해야 합니까?
PostgreSQL에서 현재 행을 인접 행과 비교하여 결과 검색
PostgreSQL에서 인접 행 간의 상관 관계와 이상 현상을 찾으려면 특정 접근 방식이 필요합니다. 그러한 사례 중 하나는 짝수 사이에 끼어 있는 홀수를 식별하는 것입니다. 창 함수를 활용하여 이 논리를 효율적으로 구현합니다.
이 개념은 현재 행을 기준으로 지정된 오프셋에서 이전 값과 다음 값을 각각 추출하는 지연 및 리드 함수를 사용합니다. 다음은 이러한 함수를 사용하는 세련된 솔루션입니다.
SELECT tokcat.text FROM ( SELECT text, category, chartype, lag(category,1) OVER w as previousCategory, lead(category,1) OVER w as nextCategory FROM token t, textBlockHasToken tb WHERE tb.tokenId = t.id WINDOW w AS ( PARTITION BY textBlockId, sentence ORDER BY textBlockId, sentence, position ) ) tokcat WHERE 'NAME' = previousCategory AND 'NAME' = nextCategory AND 'NAME' <> category
이 쿼리에서 창 함수 'w'는 하위 쿼리 내에 정의되어 데이터를 'textBlockId' 및 'sentence'로 분할하고 'textBlockId로 정렬합니다. ', '문장', '위치'입니다. 결과적으로 각 행에 대해 'previousCategory'에는 이전 행의 카테고리가 포함되고, 'nextCategory'에는 후속 행의 카테고리가 포함됩니다.
현재 행의 카테고리가 ''와 다른지 확인하여 결과를 필터링합니다. NAME'이고 'previousCategory'와 'nextCategory'는 모두 'NAME'과 일치합니다. 이를 통해 이름 범주 옆에 있는 이름이 아닌 단어를 식별할 수 있습니다.
또는 쿼리를 단순화할 수 있습니다.
SELECT text FROM ( SELECT text, category, lag(category) OVER w as previous_cat, lead(category) OVER w as next_cat FROM token t JOIN textblockhastoken tb ON tb.tokenid = t.id WINDOW w AS (PARTITION BY textblockid, sentence ORDER BY position) ) tokcat WHERE category <> 'NAME' AND previous_cat = 'NAME' AND next_cat = 'NAME';
전반적으로 창 함수를 사용하면 인접한 행을 비교하는 효율적인 방법을 제공합니다. PostgreSQL에서 특정 시퀀스 패턴이나 이상 징후를 식별할 수 있습니다.
위 내용은 창 함수를 사용하여 PostgreSQL의 인접한 행 사이에서 데이터 이상 현상을 효율적으로 찾으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!