-
[MSSQL]그룹별 최고 값 행 가지고 오기프로그래밍/기타 2025. 3. 14. 09:18반응형
예)
"성적표" 테이블에 필드가 "이름","과목,"점수" 가 있을경우 이름별 점수가 제일 높은 과목과 점수 정보를 가지고 오고 싶을 때.SELECT * FROM ( SELECT 이름, 과목, 점수, ROW_NUMBER() OVER (PARTITION BY 이름 ORDER BY 점수 DESC) AS RankNo FROM 성적표 ) T WHERE RankNo = 1
설명)
OVER 절은 쿼리 결과 집합 내의 창 또는 사용자 지정 행 집합을 정의 합니다. 그런 다음 창 함수가 창의 각 행에 대한 값을 계산합니다. OVER 절에 함수를 사용하여 이동 평균, 누적 집계, 누계 또는 그룹 결과당 상위 N개 결과 등의 집계된 값을 계산할 수 있습니다.
즉, OVER절을 사용하여 결과집합을 정의하고 ROW_NUMBER(), RANK()등 함수를 사용하여 각 행에 대한 값을 계산하라고 되어 있습니다.ROW_NUMBER - 순서데로 순번을 매김.(일련번호)
RANK() - 순서대로 순위를 매김(같은 값이면 같은 같은 등수가 입력되고, 그 다음은 +1인 숫자가 입력됨.ex)1,2,3,3,5순으로 입력됨)
DENSE_RANK() - 순서대로 순위를 매김(같은 값이면 같은 등수가 입력되고, 다음 순위도 차례대로.ex)1,2,3,3,4순으로 입력됨)반응형'프로그래밍 > 기타' 카테고리의 다른 글
💡무료 vs 유료 AI 툴 비교 블로그 글: 어떤 AI 툴이 나에게 맞을까? (0) 2025.05.28 [CSS] 반응형 테이블 (0) 2025.03.13 [MSSQL]저장 프로시저 실행 권한 부여(웹에서 저장프로시저 실행시 권한 없음 오류뜰때) (0) 2025.03.13