목록SQL (2)
STUDY_SEONMIN
SQL에서는 MIN, MAX, AVG와 같은 집계함수를 제공해주고 있지만 중앙값을 찾는 함수는 따로 존재하지 않습니다. 중앙값을 구하기 위해서 사용자 정의 변수를 사용하는 방법이 있습니다. NUMBER 6 2 3 8 이런 테이블(T)이 있다고 해보겠습니다. SET @ROWNUM:=-1; SELECT @ROWNUM:=@ROWNUM+1 AS RNUM, NUMBER FROM T ORDER BY NUMBER; 사용자 정의 변수의 초기값을 -1로 설정하고 쿼리를 실행하게 되면 RNUM NUMBER 0 2 1 3 2 6 3 8 이처럼 결과를 얻을 수 있습니다. 얻어진 테이블에서 중앙값을 찾는다고 하면 RNUM=1, RNUM=2에 해당하는 3,6의 평균값인 4.5가 될 것입니다. 현재 사용자 정의 변수인 @ROWNU..

해커랭크에서 문제를 풀다가 피봇 테이블을 만드는 문제를 만났습니다. 위와 같은 테이블이 주어졌을 때 아래와 같은 결과를 만드는 문제였습니다. 아웃풋 결과를 보면 피봇 테이블의 컬럼은 각각 Doctor, Professor, Singer, Actor 입니다. 그렇다면 행 레이블은 무엇일까요?? 해커랭크에서 문제를 읽어보면 이름은 알파벳 순서로 정렬이 되어야 한다고 나와있습니다. 이를 토대로 생각해본다면 행 레이블은 각 직업 내에서 해당 이름이 몇 번째 순서인지를 의미한다는 것을 알 수 있습니다. 직업별 이름 순서를 먼저 표현하기 위해서 ROW_NUMBER()를 사용해주었습니다. SELECT NAME, OCCUPATION, ROW_NUMBER() OVER(PARTITION BY OCCUPATION ORDER ..