PostgreSQL의 행 비교: 창 함수 활용
PostgreSQL에서 인접 행과의 비교와 관련된 쿼리 결과를 검색하려면 맞춤형 솔루션이 필요합니다. 여기에서는 이 작업에 효과적으로 접근하는 방법을 살펴봅니다.
홀수와 짝수 이웃 간의 비교
짝수 사이에 끼어 있는 홀수를 추출하기 위해 맞춤형 솔루션을 고안할 수 있습니다. 복잡한 하위 쿼리를 사용합니다. 그러나 PostgreSQL의 창 기능은 보다 효율적인 접근 방식을 제공합니다. lag() 및 Lead() 함수를 사용하여 각각 이전 행과 후속 행에서 값을 검색할 수 있으므로 textBlockId 및 문장으로 정의된 창 파티션 내에서 간단한 비교가 가능합니다.
확장 사용 사례
분류와 관련된 확장된 시나리오에서 이 기술은 특정 범주인 NAME의 인스턴스 사이에 나타나는 단어를 찾는 데 사용할 수 있습니다.
창 함수를 사용한 구현
다음 코드 조각은 문제를 해결하기 위해 창 함수를 사용하는 방법을 보여줍니다.
SELECT textcat.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' = ANY(previousCategory) AND 'NAME' = ANY(nextCategory) AND 'NAME' <> ANY(category)
또는 , 단순화된 버전 쿼리:
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 창 함수는 어떻게 인접한 행을 효율적으로 비교할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!