[SQL] ORDER BY, RANK, ROW_NUMBER

Taewoo Kim·2023년 12월 24일

[SQL]

목록 보기
7/7

가장 쉽게 시작하는 데이터 분석, SQL유치원

ORDER BY

  • ORDER BY [컬럼 이름] 형식으로 사용
  • 입력한 [컬럼 이름]의 값을 기준으로 모든 row를 정렬
  • 기본 정렬 규칙은 오름차순
  • ORDER BY [컬럼 이름] DESC
  • 여러 컬럼으로 정렬도 가능, 키워드 뒤에 컬럼 이름을 복수 개 입력하면 됨

ex ORDER BY [컬럼1],[컬럼2]

SELECT [컬럼 이름]
FROM [테이블 이름]
WHERE 조건식
ORDER BY [컬럼 이름] DESC;

RANK

데이터를 정렬해 순위를 만들어주는 함수

  • RANK() OVER (ORDER BY [컬럼 이름]) 형식
  • 항상 ORDER BY와 함께 사용
  • SELECT절에 사용, 정렬된 순서에 순위를 붙인 새로운 컬럼을 보여줌
    - 테이블의 실제 데이터에는 영향 X
SELECT [컬럼 이름],```, RANK() OVER(ORDER BY [컬럼 이름] DESC)
FROM [테이블 이름]
WHERE 조건식;

RANK() 공동 순위가 있으면 다음 순서로 건너 뜀
DENSE_RANK() 공동 순위가 있어도 다음 순위로 넘지 않음
ROW_NUMBER() 공동 순위를 무시함

함수

문자열 데이터 함수

LOCATE("A", "ABC") = 'ABC'에서 'A'가 몇번째 위치해 있는지 반환 - 문자가 여러 개라면 가장 먼저 찾은 문자의 위치를 가져옴

SELECT 컬럼명, LOCATE('i', 컬럼명)
FROM 테이블 이름

SUBSTRING(문자열, N)= ABC에서 N번째 문자부터 반환
RIGHT(문자열, N) = 오른쪽에서 N번째 문자까지 반환
LEFT(문자열, N) = 왼쪽에서 N번째 문자까지 반환
UPPER(문자열) = 모두 대문자로 변환
LOWER(문자열) = 모두 소문자로 변환
LENGTH(문자열) = 글자 수를 반환
CONCAT(문자열, 문자열) = 문자열을 합쳐 반환

숫자열 데이터 함수

ABS(숫자) = 숫자의 절댓값 반환
CEILING(숫자) = 숫자를 정수로 올림
FLOOR(숫자) = 숫자를 정수로 내림
ROUND(숫자, 자릿수) = 소수점 자릿수까지 반올림
TRUNCATE(숫자, 자릿수) = 자릿수까지 버림
POWER(숫자A, 숫자B) = 숫자의 A의 숫자B를 제곱
MOD(숫자A, 숫자B) = 숫자A를 B로 나눈 나머지 반환

날짜형 데이터 함수

NOW() = 현재 날짜와 시간 반환
CURRENT_DATE() = 현재 날짜 변환
CURRENT_TIME() = 현재 시간 반환
YEAR(날짜) = 날짜의 연도 반환
MONTH(날짜) = 날짜의 월 반환
MONTHNAME(날짜) = 날짜의 월을 영어로 반환
DAYNAME(날짜) = 날짜의 요일을 영어로 반환
DAYOFMONTH(날짜) = 날짜의 일 반환
DAYOFWEEK(날짜) = 날짜의 요일을 숫자로 반환
WEEK(날짜) = 날짜가 해당 연도에 몇 번째 주인지 반환

HOUR,MINUTE,SECOND = 시간의 시, 분, 초 반환
DATE_FORMAT(날짜/시간,형식) = 날짜/시간의 형식을 형식으로 바꿔 반환

DATEDIFF(날짜1,날짜2) = 날짜1과 날짜2의 차이 반환
TIMEDIFF(시간1,시간2) = 시간1과 시간2의 차이 반환

0개의 댓글