데이터 줄세우기 ORDER BY
가져온 데이터를 정렬
- ORDER BY [컬럼이름]
- 입력한 [컬럼이름]의 값을 기준으로 모든 ROW를 정렬
- 기본 정렬 규칙은 오름차순
- ORDER BY[컬럼 이름] = ORDER BY [컬럼 이름] ASC
- 내림차순을 원할 경우, 마지막에 DESC 키워드 추가 (ORDER BY [컬럼 이름] DESC)
- 여러 컬럼으로 정렬 가능하며, 키워드 뒤에 [컬럼이름]을 복수 개 입력하면 됨
- 위치한 순서대로 정렬됨
- 컬럼 번호로도 정렬 가능함
- 컬럼 번호는 SELECT절의 컬럼 이름 순서!
SELECT [컬럼 이름]
FROM [테이블 이름]
WHERE 조건식
ORDER BY [컬럼 이름] ASC; # ASC는 생략 가능함
#내림차순 하고 싶은 경우
SELECT [컬럼 이름]
FROM [테이블 이름]
WHERE 조건식
ORDER BY [컬럼 이름] DESC;
데이터 순위 만들기 RANK, ROW_NUMBER
데이터를 정렬해 순위를 만듦
- RANK() OVER(ORDER BY[컬럼 이름])
- 항상 ORDER BY와 함께 사용
- SELECT절에 사용, 정렬된 순서에 순위를 붙인 새로운 컬럼 보여줌
- 실제 데이터에는 영향 X
SELECT [컬럼이름], ..., RANK() OVER(ORDER BY [컬럼이름]) #내림차순 만들고 싶으면 컬럼이름 뒤에 DESC
FROM [테이블 이름]
WHERE 조건식;
RANK, DENSE_RANK, ROW_NUMBER
RANK | 공동 순위가 있으면 다음 순서로 건너 뜀 |
DENSE_RANK | 공동 순위가 있어도 다음 순위를 뛰어 넘지 않음 |
ROW_NUMBER | 공동 순위를 무시함 |
함수
- 함수이름(함수를 적용할 값 또는 컬럼 이름) 형식으로 사용
- 결과 값을 새로운 칼럼으로 반환
문자형 데이터
함수 | 활용 예시 | 설명 |
LOCATE | LOCATE("A", "ABC") | "ABC"에서 "A"는 몇 번째에 위치해 있는지 검색해 위치 반환 |
SUBSTRING | SUBSTRING("ABC", 2) | "ABC"에서 2번째 문자부터 반환 |
RIGHT | RIGHT("ABC", 1) | "ABC"에서 오른쪽에서 1번째 문자까지 반환 |
LEFT | LEFT("ABC", 1) | "ABC"에서 왼쪽에서 1번째 문자까지 반환 |
UPPER | UPPER("abc") | "abc"를 대문자로 바꿔 반환 |
LOWER | LOWER("ABC") | "ABC"를 소문자로 바꿔 반환 |
LENGTH | LENGTH("ABC") | "ABC"의 글자 수를 반환 |
CONCAT | CONCAT("ABC", "DEF") | "ABC" 문자열과 "CDF" 문자열을 합쳐 반환 |
REPLACE | REPLACE("ABC", "A", "Z") | "ABC"의 "A"를 "Z"로 바꿔 반환 |
LOCATE
#문자가 여러 개라면 가장 먼저 찾은 문자의 위치를 가져옴
#찾는 문자가 없으면 0을 가져옴
SELECT part, LOCATE('i', lyric)
FROM bts_music.butter;
SUBSTRING
#입력한 숫자가 문자열의 길이보다 크면 아무것도 가져오지 않음
SELECT part, SUBSTRING(lyric, 3)
FROM bts_music.butter;
RIGHT, LEFT 함수
SELECT part, RIGHT(lyric, 3), LEFT(lyric, 3)
FROM bts_music.butter;
UPPER, LOWER 함수
SELECT part, UPPER(lyric), LOWER(lyric)
FROM bts_music.butter;
LENGTH 함수
SELECT part, LENGTH(lyric)
FROM bts_music.butter;
CONCAT 함수
SELECT part, CONCAT(LEFT(lyric, 1), RIGHT(lyric, 1)) AS first_last
FROM bts_music.butter;
REPLACE 함수
SELECT part, REPLACE(lyric, ''.'_')
FROM bts_music.butter;
숫자형 데이터
함수 | 활용 | 설명 |
ABS | ABS(숫자) | 숫자의 절댓값 반환 |
CEILING | CEILING(숫자) | 숫자를 정수로 올림해서 반환 |
FLOOR | FLOOR(숫자) | 숫자를 정수로 내림해서 반환 |
ROUND | ROUND(숫자, 자릿수) | 숫자를 소숫점 자릿수까지 반올림해서반환 |
TRUNCATE | TRUNCATE(숫자, 자릿수) | 숫자를 소숫점 자릿수까지 버림해서 반환 |
POWER | POWER(숫자A, 숫자B) | 숫자A의 숫자B제곱 반환 |
MOD | MOD(숫자A, 숫자B) | 숫자 A를 숫자B로 나눈 나머지 반환 |
날짜형 데이터
함수 | 활용 | 설명 |
NOW | NOW() | 현재 날짜와 시간 반환 |
CURRENT_DATE | CURRENT_DATE() | 현재 날짜 반환 |
CURRENT_TIME | CURRENT_TIME() | 현재 시간 반환 |
YEAR | YEAR(날짜) | 날짜의 연도 반환 |
MONTH | MONTH(날짜) | 날짜의 월 반환 |
MONTHNAME | MONTHNAME(날짜) | 날짜의 월을 영어로 반환 |
DAYNAME | DAYNAME(날짜) | 날짜의 요일을 영어로 반환 |
DAYOFMONTH | DAYOFMONTH(날짜) | 날짜의 일 반환 |
DAYOFWEEK | DAYOFWEEK(날짜) | 날짜의 요일을 숫자로 반환 |
WEEK | WEEK(날짜) | 날짜가 해당 연도에서 몇 번째 주인지 반환 |
HOUR | HOUR(시간) | 시간 시 반환 |
MINUTE | MINUTE(시간) | 시간 분 반환 |
SECOND | SECOND(시간) | 시간 초 반환 |
DATE_FORMAT | DATEFORMAT(날짜/시간, 형식) | 날짜/시간의 형식을 형식으로 바꿔 반환 |
DATEDIFF | DATEDIFF(날짜1, 날짜2) | 날짜1과 날짜2의 차이 반환 (날짜1 - 날짜2) |
TIMEDIFF | TIMEDIFF(시간1, 시간2) | 시간1과 시간2의 차이 반환 (시간1 - 시간2) |
'SQL' 카테고리의 다른 글
[패스트캠퍼스] SQL 강의 2주차 (Day6); GROUP BY, HAVING, COUNT, SUM, AVG, MINMAX (0) | 2023.03.07 |
---|---|
[패스트캠퍼스] SQL 강의 1주차 (Day4); WHERE, NOT, AND, OR, BETWEEN, IN, LIKE, IS NULL, (0) | 2023.03.07 |
[패스트캠퍼스] SQL 강의 1주차 (Day3); SELECT, FROM, ALIAS, LIMIT, DISTINCT (0) | 2023.03.04 |
[패스트캠퍼스] SQL 강의 1주차 (Day2) (0) | 2023.03.01 |