MSSQL 최대값 구하기 MAX

최대값 구하기

MSSQL에서 데이터중 가장 큰 최댓값을 구하는 방법에 대해 살펴보겠습니다
전체 데이터중 가장 큰 값을 알고 싶을 수도 있고
특정 구분칼럼별로 가장 큰 값들을 알고 싶을 수 있습니다 (학급별 성적 1등 등..)
이럴 때 MAX함수를 통해 최댓값을 구할 수 있습니다

기본문법

SELECT MAX(COLUMN)
  FROM TABLE
/*
    TABLE 내에서 가장 큰 COLUMN의 값을 출력합니다
*/

SELECT COLUMN1
     , MAX(COLUMN2)
  FROM TABLE
 GROUP BY COLUMN1
/*
    TABLE내에서 COLUMN1별로 가장큰COLUMN2 값을 출력합니다
*/

MAX는 그룹함수 이기 때문에, GROUP BY 되지 않은 일반칼럼과는 함께 조회할 수 없습니다

💡그룹함수: 그룹별로 데이터를 조회하는 데 사용되는 함수 MAX(최대값), MIN(최소값) 등이 있습니다
GROUP BY로 GROUP을 지정해 주되 지정하지 않은 경우 전체데이터를 그룹으로 조회합니다

 

그룹별로 가장 큰 값 구하기

MAX함수는 그룹함수답게 그룹별로 가장 많이 쓰입니다
예를 들어 학급별로 가장 높은 성적이 몇 점인지 알고 싶다면 다음과 같이 작성할 수 있습니다

SELECT CLASS
     , MAX(GRADE_SCORE) AS MAX_GRADE_SCORE
  FROM STUDENT_SCORE
/*
    STUDENT_SCORE: 학생정보(성적포함) 데이터가 담긴 테이블
    CLASS: 학급정보 컬럼
    GRADE_SCORE: 성적정보 컬럼
    
    학급(CLASS)별로 가장높은 성적점수(GRADE_SCORE)가 출력됩니다
*/

위에서 학급당 성적정보를 조회했는데요
추가적으로 가장 높은 성적을 거둔 학생의 정보를 조회하려면 다음과 같이 작성할 수 있습니다

SELECT A.*
  FROM STUDENT_SCORE A
       INNER JOIN (
           SELECT CLASS
                , MAX(GRADE_SCORE) AS MAX_GRADE_SCORE
             FROM STUDENT_SCORE
            GROUP BY CLASS
       ) B ON (B.CLASS = A.CLASS AND B.MAX_GRADE_SCORE = A.GRADE_SCORE)
/*
    STUDENT_SCORE: 학생정보(성적포함) 데이터가 담긴 테이블
    CLASS: 학급정보 컬럼
    GRADE_SCORE: 성적정보 컬럼
    
    학급(CLASS)별로 가장높은 성적점수(GRADE_SCORE)를 가진 학생정보들이 출력됩니다
*/