► 모든 코드의 컴파일 버전은 "MySQL" 기준입니다!
-- 출저 : 프로그래머스, "평균 일일 대여 요금 구하기" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/151136
SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV'
-- 출저 : 프로그래머스, "재구매가 일어난 상품과 회원 리스트 구하기" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131536
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC
[문제 접근 방식]
- 동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재라고 명시함.
- 재구매 이력이 있는 회원 ID와 상품 ID를 나타내는 문제이기 때문에, Group BY를 통해 컬럼별 집계하고 이후 결과에서 2회 이상 구매한 내역만 조회하면 재구매 리스트를 뽑을 수 있다고 생각함.
-- 출저 : 프로그래머스, "역순 정렬하기" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59035
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
-- 출저 : 프로그래머스, "아픈 동물찾기" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59036
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID
-- 출저 : 프로그래머스, "어린 동물찾기" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59037
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
-- 출저 : 프로그래머스, "동물의 아이디와 이름" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59403
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
-- 출저 : 프로그래머스, "여러 기준으로 정렬하기" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59404
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC
-- 출저 : 프로그래머스, "상위 n개 레코드" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59405
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
-- 출저 : 프로그래머스, "조건에 맞는 회원수 구하기" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131535
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE YEAR(JOINED)='2021' and AGE >= 20 AND AGE <= 29;
-- 출저 : 프로그래머스, "조건에 맞는 도서 리스트 출력하기" 문제
-- 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/144853
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = '2021' AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;
[문제 접근 방식]
- PUBLISHED_DATE의 데이트 포맷이 예시와 동일해야 정답처리되므로, SELECT 문에서 DATE_FORMAT 구문을 활용함.
- '%Y-%m-%d' (년-월-일)로 형식을 바꿔서 문제를 품
- GROUP BY + HAVING : 특정 열을 그룹화한 결과에 조건을 조회
► HAVING -> 그룹화 후 , WHERE 그룹화 전
- LIMIT : 레코드 출력 개수 제한
- DATE_FOMRAT 구문 활용
-> '%Y-%m-%d' 자유롭게 변경 가능