-
[MYSQL]코딩테스트용 문법 정리문제풀이/SQL 2021. 9. 14. 15:35
📝 코딩테스트에서 자주 나오는 SQL 문법 정리
📌 요즘 코딩테스트에 SQL문제가 포함된 경우를 자주 만나고 있다.
📌 그럴 때마다 프로그래머스의 SQL문제를 다시한번 쭉 풀어보고 있으며 프로그래머스에 있는 'SQL 고득점 KIT'를 전부 풀 수 있는 수준이되면 코딩테스트에 나오는 SQL문제는 어렵지 않게 풀 수 있다.
📌그래서 이번에는 프로그래머스의 고득점 'SQL 고득점 KIT'를 중심으로 코딩테스트 직전에 SQL문법들을 훑어보기 좋게 정리해 보려고 한다.
📌기본적인 문법들 말고 문제를 푸는데 필요한 문법 위주로 정리했다.
✔ 다중정렬: 순서대로 정렬의 우선순위를 의미하며 2가지 이상의 필드를 조합하여 정렬할 수 있다.
ORDER BY NAME, DATE DESC
- NAME 순으로 오름차순 정렬, NAME 같을시 DATE 내림차순 정렬
✔ LIMIT: 결과 개수 제한
ORDER BY NAME LIMIT 2
- NAME 순으로 오름차순 정렬된 테이블에서 가장 위에서 부터 2개의 레코드 결과만을 가져옴
✔ DISTINCT: 중복 제거
SELECT COUNT(DISTINCT NAME) ...
- NAME을 COUNT하되, 중복을 제거하여 COUNT한다.
✔ YEAR, HOUR, MONTH, DAY... : 날짜와 관련된 필드에서 원하는 데이터의 일부를 추출
SELECT HOUR(DATETIME) ...
- DATETIME과 날짜와 시간을 모두 포함하는 필드에서 원하는 데이터(년도, 시간, 달, 일, 분, 초 등)을 추출
- 위 예시에서는 시간 정보만을 추출하고 있다.
✔ SET: 변수 생성, 사용
SET @TIME := 1;
- TIME이라는 변수를 사용하며 초기값을 1로 설정
SELECT @TIME := @TIME + 1 ...
- TIME 변수에 누적하여 1씩 더하여 결과를 출력
... WHERE HOUR(DATETIME) = @TIME ...
- DATETIME의 HOUR값이 TIME변수와 같은 값인지 조건 확인
✔ IFNULL: 결과 값 중 컬럼값이 NULL인 경우를 처리
SELECT IFNULL(NAME, 'NO NAME') ...
- NAME 값이 NULL이면 'NO NAME'으로 변경
✔ IN/NOT IN: 특정 값이 들어있는 경우/들어있지 않은 경우에만 조회
SELECT ... WHERE NAME IN (SELECT NAME ...)
- 두번째 서브쿼리의 조건에 해당하는 NAME값이 들어있는 경우에 대해서만 조회
✔ LIKE: 부분 일치를 찾음
WHERE NAME LIKE '%A%'
- NAME 컬럼 값이 A가 포함된 경우를 조회
WHERE NAME LIKE 'A%'
- NAME 컬럼 값이 A로 시작하는 경우를 조회
WHERE NAME LIKE '%A'
- NAME 컬럼 값이 A로 끝나는 경우를 조회
✔ CASE: 조건문
SELECT (CASE WHEN NAME LIKE '%DOG%' THEN 'O' WHEN NAME LIKE '%CAT%' THEN 'O' ELSE 'X' END) AS 'DOGORCAT' ...
- NAME에 DOG나 CAT이 포함되었다면 'O'를, 아니라면 'X'를 'DOGORCAT'라는 이름의 컬럼으로 출력
✔ DATE_FORMAT: 날짜, 시간을 지정한 형식으로 출력
SELECT DATE_FORMAT(DATETIME, '%Y-%m-%d') ...
- DATETIME을 '2021-SEPTEMBER-1th' 형식으로 출력
- %Y %y(년도), %D %d(날짜), %M %m(월), %S(초), %T(hh:mm:ss형태). 대문자,소문자 별로 출력 형식 다름 주의
✔ ABS(): 절대값
SELECT ABS(-100) ...
- 숫자의 절대값을 구함
✔ CEIL(), FLOOR(), ROUND(): 올림/버림/반올림
SELECT CEIL(10, 1) ... #소수점 첫째자리에서 올림 SELECT FLOOR(10, 1) ... #소수점 첫째자리에서 버림 SELECT ROUND(10, 1) ... #소수점 첫째자리에서 반올림
- 첫 번째 숫자를 두 번째 숫자가 가리키는 자릿수를 기준으로 올림/버림/반올림
✔ POW(): 제곱
SELECT POW(10, 2) ...
- 첫 번째 숫자를 두 번째 숫자만큼 제곱
'문제풀이 > SQL' 카테고리의 다른 글
[프로그래머스]STRING,DATE - DATETIME에서 DATE로 형 변환 (0) 2021.03.02 [프로그래머스]STRING,DATE - 오랜 기간 보호한 동물(2) (0) 2021.03.02 [프로그래머스]STRING,DATE - 중성화 여부 파악하기 (0) 2021.03.02 [프로그래머스]STRING,DATE - 이름에 el이 들어가는 동물 찾기 (0) 2021.03.02 [프로그래머스]STRING,DATE - 루시와 엘라 찾기 (0) 2021.03.02