[SQL] 코딩테스트 MYSQL 문법 정리

전현준·2025년 4월 27일

문자열

like

  • 중간에 "-03-" 이 들어간 문자열 고르기

    DATE_OF_BIRTH LIKE "%-03-%" 
  • 1993으로 시작하는 문자열 고르기

    DATE_OF_BIRTH LIKE "1993%" 

문자열 자르기

  • LEFT(문자열, 자를 개수)
  • SUBSTRING(문자열, 시작 위치, 길이)
  • RIGHT(문자열, 자를 개수)
  • SUBSTRING_INDEX(문자열, delim, count)
    - 구분자에 따라서 count번째까지 출력함

문자열 함수

  • concat(str, "cm") : 뒤에 문자열 추가하기

다중 행 집계 함수

  • SUM : 합계
  • AVG : 평균
  • COUNT(표현식) : 갯수 세기

숫자 함수

  • ROUND(1234.5678, 1) : 반올림
  • TRUNCATE(1234.5678, 1) : 버림

Case

SELECT ID,
    CASE 
        WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
        WHEN 100 < SIZE_OF_COLONY AND SIZE_OF_COLONY <= 1000 THEN 'MEDIUM'
        WHEN 1000 < SIZE_OF_COLONY THEN 'HIGH'
    END AS SIZE
    FROM ECOLI_DATA
  • 특정 값이 NULL일 때도 사용 가능함
SELECT ID,
    CASE 
        WHEN SIZE_OF_COLONY IS NULL THEN 'N'
        ELSE SIZE_OF_COLONY
    END AS SIZE
    FROM ECOLI_DATA

상위 n개 출력하기

SELECT * FROM TABLE LIMIT 100
SELECT * FROM TABLE LIMIT 50

날짜

DATE_FORMAT(START_DATE, '%Y-%m-%d')

  • 문자열이기 때문에 DATE type에서 Group By 하려면 문제가 생길 수 있음
  • 그때는 YEAR(), DAY() 함수를 사용해서 DATE 타입으로 사용하기

두 날짜 차이 구하기 : TIMESTAMPDIFF(단위, 날짜1, 날짜2) 날짜1 - 날짜2 차이를 선택한 단위로 반환

  • 일자 계산 : DATEDIFF(날짜1, 날짜2)
    -> 30일 차이 : DATEDIFF(날짜1, 날짜2) < 29

비트 연산

SELECT   COUNT(*) AS 'COUNT'
FROM    ECOLI_DATA
WHERE   ((GENOTYPE & 2) != 2) AND
        ((GENOTYPE & 4) = 4 OR (GENOTYPE & 1) = 1)
profile
백엔드 개발자(아니고 은행원) 전현준입니다.

0개의 댓글