프로그래머스 SQL

bomb·2023년 10월 20일
  1. NULL처리와 LIKE

SELECT ADDRESS, IFNULL(FREEZER_YN, 'N') AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기%'

  1. DATE_FORMAT
    DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
    m 이랑 d로써야 숫자로 나오고,
    M 이랑 D로 쓰면 2020-March-1st 이런식이다.

  2. 날짜, 월, 일 추출하기
    WHERE YEAR(JOINED)= 2021
    WHERE MONTH(JOINED)= 10
    WHERE DAY(JOINED)= 20

  3. 반올림 하기
    ROUND(숫자, -N) : 반올림해서 10의 N승 자리까지 반올림
    ex : ROUND(93727, -2) => 93700
    ROUND(숫자, 0) : 반올림해서 1의 자리까지 표시
    ex : ROUND(93727.3, 0) => 93727
    ROUND(숫자, N) : 소수점 아래 N째 자리까지 반올림 표시
    ex : ROUND(93727.273, 2) => 93727.27

  4. JOIN 기본
    SELECT a.FLAVOR
    FROM FIRST_HALF AS a
    INNER JOIN ICECREAM_INFO AS b
    ON b.FLAVOR = a.FLAVOR
    WHERE b.INGREDIENT_TYPE = 'fruit_based'
    ORDER BY a.TOTAL_ORDER DESC

  5. DATEDIFF문 다루기(날짜)
    CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 29 THEN '장기 대여'
    ELSE '단기 대여'
    END AS RENT_TYPE

  6. CASE문 다루기
    SELECT ANIMAL_ID, NAME,
    CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' THEN 'O'
    WHEN SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
    ELSE 'X'
    END AS '중성화'
    FROM ANIMAL_INS

  7. DISTINCT
    SELECT COUNT(DISTINCT NAME) AS count
    FROM ANIMAL_INS

  8. GROUP BY, COUNT
    SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count
    FROM ANIMAL_INS
    WHERE ANIMAL_TYPE LIKE 'Cat' OR ANIMAL_TYPE LIKE 'Dog'
    GROUP BY ANIMAL_TYPE

  1. 문자열 자르기
  • X부터 2개 자르기(0넣으면 에러난다)
    -SELECT SUBSTRING(PRODUCT_CODE, X, 2) FROM PRODUCT
  • 왼쪽부터 2개 자르기
    -SELECT LEFT(PRODUCT_CODE, 2) FROM PRODUCT
  • 오른쪽부터 2개 자르기
    -SELECT RIGHT(PRODUCT_CODE, 2) FROM PRODUCT
  1. 특정 문자열 포함
    SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
    FROM ANIMAL_INS
    WHERE NAME IN ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')

  2. DATEDIFF 유의점.
    DATEDIFF(END_DATE, START_DATE)

다시 풀어볼 문제
:
https://school.programmers.co.kr/learn/courses/30/lessons/133025
https://school.programmers.co.kr/learn/courses/30/lessons/164673 : Inner JOIN
https://school.programmers.co.kr/learn/courses/30/lessons/131533 : JOIN
https://school.programmers.co.kr/learn/courses/30/lessons/131529 : GROUP BY
https://school.programmers.co.kr/learn/courses/30/lessons/59412 : GROUP BY
https://school.programmers.co.kr/learn/courses/30/lessons/144855 : GROUP BY
https://school.programmers.co.kr/learn/courses/30/lessons/131530 : FLOOR
https://school.programmers.co.kr/learn/courses/30/lessons/157342 : HAVING
https://school.programmers.co.kr/learn/courses/30/lessons/164668 : HAVING
https://school.programmers.co.kr/learn/courses/30/lessons/131123
https://school.programmers.co.kr/learn/courses/30/lessons/164670 : 문자열 다루기
https://school.programmers.co.kr/learn/courses/30/lessons/157340 : IN 다루기
https://school.programmers.co.kr/learn/courses/30/lessons/77487 : 해비 유저가 소유한 장소
https://school.programmers.co.kr/learn/courses/30/lessons/164671 : 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
https://school.programmers.co.kr/learn/courses/30/lessons/151139 : 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기(중요)

0개의 댓글