코딩테스트(SQL) 오답

jayce·2025년 4월 4일
  • 어떤 문자 포함하거나 시작하지 않는 등 → LIKE
  • DISTINCT 는 괄호 없이 사용
  • %,_ 기호 포함하고 싶을 떄는 이스케이프 문자(\) 앞에 붙이기
  • HAVING에 조건 붙이려면 GROUP BY 가 선행되어야 함
  • 어떤 조건이 있을 때 대소문자 이슈 잘 확인하기!!! LOWER(), UPPER() 써써 해결
  • 날짜 함수 숙지하기!! DATE_FORMAT(날짜, '%Y-%m-%d')
  • 반올림 ROUND(), 올림 CEIL(), 내림 FLOOR(), 버림 TRUCN
  • COALESCE(a, b)는 a가 NULL이면 b를 리턴하는 함수. 누락된 값만 평균으로 대체할 때 씀.
  • CAST(숫자형 AS CHAR) → 숫자형을 문자형으로 변환하는 함수
  • IN (SELECT MAX(x), MAX(y))는 2개 컬럼을 반환하는 서브쿼리라 튜플 비교처럼 작동하지 않음
  • 튜플 비교를 하려면 JOIN이나 x = ... AND y = ... 방식을 써야 함
  • ORDER BY 에서 순서를 지정할 수 있음! ORDER BY FIELD(weekday,'월요일','화요일','수요일','목요일','금요일','토요일','일요일')
  • 요일 한글로 나타낼 때
CASE DAYOFWEEK(measured_at)
         WHEN 1 THEN '일요일'
         WHEN 2 THEN '월요일'
         WHEN 3 THEN '화요일'
         WHEN 4 THEN '수요일'
         WHEN 5 THEN '목요일'
         WHEN 6 THEN '금요일'
         WHEN 7 THEN '토요일'
       END AS weekday
  • WITH문 두개 이어서 쓰려면
WITH a AS (
...
), b AS (
...
)
  • 윈도우 함수 함수() OVER(PARTITION BY 컬럼 ORDER BY 컬럼)
  • 자주 사용하는 함수 RANK(), DENSE_RANK(), ROW_NUMBER(), LEAD(), LAG() 등 합계함수도 가능
  • 누적합
SUM(pm10) OVER (ORDER BY measured_at ROWS UNBOUNDED PRECEDING)
  • 이동평균
AVG(pm10) OVER (ORDER BY measured_at ROWS BETWEEN 1 PRECENDING AND 1 FOLLOWING)

ROUND(AVG(zone_quads) OVER 
(ORDER BY measured_at ROWS BETWEEN 5 PRECEDING AND CURRENT ROW),2) zone_quads
  • 날짜 더하기 빼기
DATE_ADD(measured_at, INTERVAL 10 MINUTE)
DATE_SUB(날짜, INTERVAL n 단위)
DATEDIFF(날짜1, 날짜2)
TIMESTAMPDIFF(단위, 날짜1, 날짜2)
  • LEAD() LAG()
-- 이렇게 하면 연속쌍 개수가 생김!
LEAD(year,1) OVER(PARTITION BY author ORDER BY year) next
  • 제곱함수 POW(컬럼,2)

  • 루트함수 SQRT()

  • 내가 원하는 문자열까지 자르기
    SUBSTR(문자열,시작위치숫자,끝낼위치숫자),
    SUBSTRING_INDEX(문자열, 기준, 기준이 몇번 나타날때까지 추출할지 결정(양수면 왼쪽부터, 음수면 오른쪽부터))

0개의 댓글