𝙎𝙌𝙇

[MySQL] 프로그래머스 SQL 고득점 Kit

콜라맛갈비 2023. 1. 6. 22:00
728x90

https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

1. 날짜 형식 변환 DATE_FORMAT 함수

DATE_FORMAT('20230106', '%Y/%m/%d')

> 2023/01/06

지정값 구분 표시형식
%Y 4자리 연도
%y 2자리 연도
%m 2자리 (00-12)
%c 1자리, 10보다 작을경우 (1-12)
%M 이름(January, February…)
%b 줄인 이름(Jan, Feb…)
%d 2자리 (00-31)
%e 1자리, 10보다 작을경우 (0-31)
%D 1st, 2nd…
%H 24시간 형식 (00-23)
%h 12시간 형식 (01-12)
%I 12시간 형식 (01-13)
%k 24시간 형식, 10보다 작을경우 한자리 (0-23)
%l 12시간 형식, 10보다 작을경우 한자리 (1-12)
%i 2자리 (00-59)
%S 2자리 (00-59)
%s 2자리 (00-59)
%f 마이크로초 100만분의 1초
%p 오전/오후 AM/PM
%T 시분초 24시간 형식 (hh:mm:ss)
%r 시분초 오전/오후 12시간 형식 (hh:mm:ss AM/PM)
%j 그해의 몇번째 일인지 표시 (001-366)
%w 그주의 몇번째 일인지 표시 (0=일요일, 6=토요일)
%W 이름(Monday,Tuesday…)
%a 줄인 이름(Mon,Tue…) 
%U 그해의 몇번째 주인지 표시 (00-53) 일요일이 주의 첫번째일
%u 그해의 몇번째 주인지 표시 (00-54) 월요일이 주의 첫번째일
%X 그주가 시작된 해을 표시, %V와 같이 사용
%x 그주가 시작된 해을 표시, %v와 같이 사용
%V 그주가 시작된 해의 몇번째 주인지 표시 (01-53)
일요일이 주의 첫번째일 %X 와 함께사용
%v 그주가 시작된 해의 몇번째 주인지 표시 (01-53)
월요일이 주의 첫번째일 %x 와 함께사용

 

2. 상위 N개 레코드

SELECT NAME
FROM ANIMAL_INS 
ORDER BY DATETIME
LIMIT 1

 

3. 최대값 구하기

SELECT MAX(DATETIME) AS '시간' 
FROM ANIMAL_INS;


SELECT DATETIME AS 시간
FROM ANIMAL_INS
ORDER BY DATETIME DESC
LIMIT 1;

 

4. 중복 제거하기

SELECT COUNT(distinct(NAME)) AS count
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;

 

 

5. 입양 시각 구하기(2)

SELECT HOUR, IFNULL(OUTCOUNT,0) AS COUNT
FROM (
    SELECT @N := @N + 1 AS HOUR
FROM ANIMAL_OUTS, (SELECT @N := -1 FROM DUAL) nn LIMIT 24
) AS A 
LEFT JOIN 
(SELECT HOUR(DATETIME) AS HR, count(*) as OUTCOUNT FROM ANIMAL_OUTS GROUP BY HR) AS B 
ON A.HOUR = B.HR

-  IFNULL(OUTCOUNT, 0)

  : NULL값이면 0으로 채워넣기

 

-  DUAL

  : 임의의 테이블 만들기

N을 -1로 임시 저장

N은 -1 + 1 = 0

HR이 0~99까지 출력됨

LIMIT 24 추가 시 0~23까지 출력됨

 

 

6. 저자 별 카테고리 별 매출액 집계하기

SELECT
    B.AUTHOR_ID,
    A.AUTHOR_NAME,
    B.CATEGORY,
    (SUM(S.SALES*B.PRICE)) AS TOTAL_SALES
FROM BOOK AS B
LEFT JOIN BOOK_SALES AS S
ON B.BOOK_ID=S.BOOK_ID
LEFT JOIN AUTHOR AS A
ON B.AUTHOR_ID=A.AUTHOR_ID
WHERE S.SALES_DATE LIKE '2022-01%'
GROUP BY B.AUTHOR_ID, B.CATEGORY
ORDER BY B.AUTHOR_ID, B.CATEGORY DESC

 

 

 

끝!

 

 

 

 

* 잘 정리해둔 사이트 발견!

코딩테스트를 위한 MySQL 문법 정리 (tistory.com)

728x90