패스트캠퍼스 데이터 분석 부트캠프

[SQL 기초 문법] 원하는 데이터 만들기 ORDER BY, RANK, 문자형 데이터 함수, 숫자형 데이터 함수, 날짜형 데이터 함수, FORMAT 함수 등

쓔! 2024. 4. 4. 15:01

05. 원하는 데이터 만들기

 

 

1. 데이터 줄 세우기 ORDER BY 

ORDER BY 컬럼명 (ASC)    => 오름차순 정렬. ASC는 기본값이라 생략 가능

ORDER BY 컬럼명 DESC   => 내림차순 정렬

 

만약 여러컬럼으로 정렬하고 싶다면?

ORDER BY 컬럼1  오름차순or내림차순 , 컬럼2 오름차순or내림차순

=> 순서대로 컬럼1 기준으로 정렬, 컬럼1 값이 동일하다면 컬럼2 값으로 정렬

 

칼럼이 너무 길땐 칼럼 인덱스로 대체해서 표현 가능

SELECT number, name, attack defense

                  1             2          3          4

FROM mypokemon

ORDER BY 3 DESC, 4;

=> 3번 컬럼인 attack을 기준으로 내림차순 정렬한 후, 값이 동일하면 4번 컬럼인 defense를 기준으로 오름차순 해라

 

2. 순위 만들어서 보여주기

1) RANK

SELECT 컬럼명, ,,,, , RANK() OVER (ORDER BY 컬럼명)

FROM 테이블명

WHERE 조건식;

 

ORDER BY 컬럼에 있는 컬럼을 기준으로 정렬한 후 순위를 매겨 새로운 칼럼으로 보여줌

이때 실제 테이블을 수정하는 것은 아님!!!!

 

2) DENSE_RANK

SELECT 컬럼명, ,,,, , DENSE_RANK() OVER (ORDER BY 컬럼명)

FROM 테이블명

WHERE 조건식;

 

3) ROW_NUMBER

SELECT 컬럼명, ,,,, , ROW_NUMBER() OVER (ORDER BY 컬럼명)

FROM 테이블명

WHERE 조건식;

 

사용방법은 두 방법 모두 RANK와 완전 동일.

 

3가지 방법은 어떻게 다를까?

RANK는 공동순위가 있다면 다음순위를 건너뛰고 순위를 매긴다

DENSE_RANK는 공동순위가 있어도 다음순위를 건너뛰지 않음

ROW_NUMBER는 값이 같아도 공동 순위를 매기지 않음. 그냥 정렬 순서대로 로우에 순서를 매김.

 

3. 문자형 데이터를 다루는 함수

 

4. 숫자형 데이터를 다루는 함수

 

 

5. 날짜 데이터를 다루는 함수