ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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) ...
    • 첫 번째 숫자를 두 번째 숫자만큼 제곱

    댓글

Designed by Tistory.