본문 바로가기
study/TIP

컬럼의 항목별 5건씩 뽑아주세요

by 휘루걸음 2024. 2. 23.
728x90
반응형

메신저로 DB작업 요청이 들어옵니다. 구글에 검색하고, 챗봇에게 질문하면서, 테스트를 진행합니다.

반응형

눈을 비벼봅니다. 수천건의 빈 ROW들이 보입니다. 이상하다... NULL 제거했는데? 

728x90

공백인가!? TRIM 도 해보고 길이값도 체크해봅니다. 중구난방 제각각인 데이터 길이에, TRIM을 해도 줄어들지 않습니다.

데이터를 개별적으로 열어보니 NULL 데이터가 아니라, 줄바꿈이 들어간게 수천건이었습니다.

SELECT REPLACE(CONT,CHR(10),'') AS RE_CONT,

 

여차저차 결과를 도출합니다. 데이터를 추출해서 송부합니다.

작업 후 샘플을 글로 남깁니다.


Oracle에서 GROUP BY를 사용하여 A 컬럼으로 필터링하고, 각각의 A 컬럼 값에 대해 전체 데이터 중 5건씩 뽑는 쿼리를 작성할 수 있습니다. 이를 위해 ROW_NUMBER() 함수를 사용하여 각 행에 번호를 부여하고, 그 번호를 기준으로 5건씩 선택할 수 있습니다.

 

아래는 예시 쿼리입니다.

SELECT *
FROM (
    SELECT 
        your_columns, 
        ROW_NUMBER() OVER (PARTITION BY A ORDER BY your_order_column) as rnk
    FROM your_table
    WHERE your_condition -- 필요한 조건 추가
)
WHERE rnk <= 5;
 

위의 쿼리에서 다음을 변경해야 합니다:

  • your_columns: 선택하려는 컬럼들을 나열합니다.
  • A: GROUP BY로 지정할 컬럼인 A를 사용합니다.
  • your_order_column: ROW_NUMBER() 함수에서 정렬에 사용할 컬럼을 선택합니다.
  • your_table: 데이터를 가져올 테이블의 이름을 지정합니다.
  • your_condition: 필요한 조건을 추가합니다.

이 쿼리는 A 컬럼 값으로 그룹화하고, 각 그룹 내에서 your_order_column을 기준으로 정렬한 후에 각 행에 번호를 매깁니다. 그리고 각 번호가 5 이하인 행만 선택하여 반환합니다.

 

 

 

728x90
반응형