[SQL] 프로그래머스 SELECT, 반올림, WHERE, IN/NOT IN, DATE_FORMAT, COUNT, CASE, DATEDIFF, LIMIT

Stella·2023년 7월 13일

프로그래머스 LV.1 개념 정리

1. SELECT 절

REPLACE(COLUMN, '값', '변경값')

  • REPLACE를 두번 사용하는 경우
    REPLACE(REPLACE(COLUMN, '값1', '변경값1'),'값2', '변경값2')

반올림, 버림, COUNT

  • 반올림
    ROUND(AVG(컬럼), 소수점자릿수) AS 별칭
SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV'
  • 버림
    TRUNCATE(컬럼, 소수점자릿수)
  • COUNT
    COUNT(DISTINCT NAME) AS count
    count를 먼저 사용하고 distinct를 사용해야 한다.

날짜, 시간 원하는 것만 출력하기

  • DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d')
    대문자 Y는 년도 전체를 소문자 y는 23으로 축약해서 나타난다.
    %Y~%m~%d 등 다양한 기호와 함께 사용이 가능하다.

  • DATE_FORMAT(PUBLISHED_DATE, '%H%i%s')
    %H:%i:%s 기호와 함께 사용도 가능하다.
    DATE_FORMAT(PUBLISHED_DATE, '%H:%i:%s')
    시간:분:초 형식으로 출력하고 싶을 때

2. WHERE 절

  • 조건문이 여러 개 일 때
    WHERE (COLUMN LIKE 'L%' OR COLUMN LIKE '조건')으로 사용해주기

  • IN, NOT IN
    WHERE intake_condition IN ('Sick')
    WHERE intake_condition NOT IN ('Aged')

3. CASE 문

CASE WHEN 조건1 AND 조건1 THEN 결과값1
ELSE 결과값
END (AS) 별칭

  • CASE문을 활용한 쿼리 예시
    대여 기간은 시작일, 종료일 모두 포함 하기 때문에 +1을 해야한다.
    DATEDIFF(A, B) +1 전체 포함 일수
SELECT ANIMAL_ID, NAME,
(CASE WHEN SEX_UPON_INTAKE = 'Neutered Male' THEN 'O'
WHEN SEX_UPON_INTAKE = 'Spayed Female' THEN'O' ELSE 'X' END) AS '중성화'
FROM ANIMAL_INS;

CASE WHEN DATEDIFF(END_DATE, START_DATE)+1 >= 30
        THEN '장기 대여'
        ELSE '단기 대여'
        END RENT_TYPE
  • CASE문을 활용 쿼리 예시 2
SELECT name,
       score,
       CASE
           WHEN score >= 90 THEN 'A'
           WHEN score >= 80 THEN 'B'
           WHEN score >= 70 THEN 'C'
           ELSE 'F'
       END AS grade
FROM students;

END AS는 grade 컬럼이라고 나타낼 수 있다.

4. DATEDIFF

두 기간 사이의 일수를 계산하는 함수

DATETIME(종료일, 시작일) : 두 기간 사이의 일수를 계산하는 함수
TIMEDIFF(종료일, 시작일) : 두 기간 사이의 시간을 계산하는 함수
PERIOD_DIFF(종료일, 시작일) : 두 기간 사이의 개월 수 차이를 계산하는 함수
TIMESTAMPDIFF(단위, 시작일, 종료일) : 시간 또는 개월 수 등 여러 가지 형태의 계산을 할 수 있는 함수, 다른 함수들과 시작일과 종료일의 순서가 반대된다.

SELECT TIMESTAMPDIFF(DAY, '2025-07-01', '2025-07-10') AS day_diff;

5. LIMIT

LIMIT n : n으로 지정된 숫자만큼 행이 출력된다.

- NULL 활용하기

IFNULL, COALESCE는 SELECT절에서 사용하는 것!!!

6. IFNULL(컬럼, '변경값')

IFNULL(컬럼, '변경할값') AS COLUMN NAME

// IFNULL은 NONE값을 NULL값으로 변경해 준다. 
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME

7. COALESCE(컬럼1, 컬럼2, '변경값')

여러 값 중에서 가장 먼저 NULL이 아닌 값을 반환하는 함수입니다.
= IFNULL은 컬럼 하나만 선택 가능, COALESCE는 컬럼 여러개 사용이 가능하다.

8. WHERE 컬럼 IS NULL / IS NOT NULL

NULL값을 조회할 때 WHERE = 'NULL' 대신 IS NULL 또는 IS NOT NULL을 사용한다.

profile
공부 기록

0개의 댓글