티스토리 뷰
문제 순서
- 평균 일일 대여 요금 구하기 (Level1)
- 조건에 맞는 도서 리스트 출력하기 (Level1)
- 12세 이하인 여자 환자 목록 출력하기 (Level1)
- 조건에 부합하는 중고거래 댓글 조회하기 (Level1)
- 3월에 태어난 여성 회원 목록 출력하기 (Level2)
- 흉부외과 또는 일반외과 의사 목록 출력하기 (Level1)
- 과일로 만든 아이스크림 고르기 (Level1)
- 인기있는 아이스크림 (Level1)
- 강원도에 위치한 생산공장 목록 출력하기 (Level1)
- 재구매가 일어난 상품과 회원 리스트 (Level2)
- Python 개발자 찾기 (Level1)
- 조건에 맞는 개발자 찾기 (Level2)
- 잔챙이 잡은 수 구하기 (Level1)
- 가장 큰 물고기 10마리 구하기 (Level1)
- 특정 물고기를 잡은 총 수 구하기 (Level2)
✅ 15문제에 대한 답만 작성했습니다. 점차 추가해 나가겠습니다.
https://school.programmers.co.kr/learn/courses/30/parts/17042
평균 일일 대여 요금 구하기
SELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';
조건에 맞는 도서 리스트 출력하기
- DATE_FORMAT()
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;
12세 이하인 여자 환자 목록 출력하기
- IFNULL(<컬럼>, '값')
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
조건에 부합하는 중고거래 댓글 조회하기
SELECT
B.TITLE,
B.BOARD_ID,
R.REPLY_ID,
R.WRITER_ID,
R.CONTENTS,
DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_REPLY R
LEFT JOIN USED_GOODS_BOARD B
ON B.BOARD_ID = R.BOARD_ID
WHERE YEAR(B.CREATED_DATE) = 2022 AND MONTH(B.CREATED_DATE) = 10
ORDER BY R.CREATED_DATE, B.TITLE;
3월에 태어난 여성 회원 목록 출력하기
- MONTH()
- IS NOT NULL
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE GENDER = 'W' AND MONTH(DATE_OF_BIRTH) = 3 AND TLNO IS NOT NULL
ORDER BY MEMBER_ID
흉부외과 또는 일반외과 의사 목록 출력하기
- DATE_FORMAT()
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD in ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME;
과일로 만든 아이스크림 고르기
SELECT F.FLAVOR
FROM FIRST_HALF F
INNER JOIN
(
SELECT FLAVOR
FROM ICECREAM_INFO
WHERE INGREDIENT_TYPE = 'fruit_based'
) I
ON F.FLAVOR = I.FLAVOR
WHERE F.TOTAL_ORDER > 3000
ORDER BY F.TOTAL_ORDER DESC;
인기있는 아이스크림
SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID;
강원도에 위치한 생산공장 목록 출력하기
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE "강원도%"
ORDER BY FACTORY_ID;
재구매가 일어난 상품과 회원 리스트 구하기
SELECT DISTINCT O.USER_ID AS USER_ID, O.PRODUCT_ID AS PRODUCT_ID
FROM ONLINE_SALE O
WHERE
(
SELECT COUNT(*)
FROM ONLINE_SALE OS
WHERE O.USER_ID = OS.USER_ID AND O.PRODUCT_ID = OS.PRODUCT_ID
) > 1
ORDER BY USER_ID, PRODUCT_ID DESC
혹은
SELECT DISTINCT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID, PRODUCT_ID DESC
Python 개발자 찾기
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE "Python" IN (SKILL_1, SKILL_2, SKILL_3)
ORDER BY ID;
# WHERE절에 SKILL_1 = "Python" OR SKILL_2 = "Python" OR SKILL_3 = "Python" 가능
조건에 맞는 개발자 찾기
- 비트 연산자 &
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS
WHERE
SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = "Python")
OR
SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = "C#")
ORDER BY ID;
잔챙이 잡은 수 구하기
SELECT COUNT(*) AS FISH_COUNT
FROM FISH_INFO
WHERE LENGTH IS NULL;
가장 큰 물고기 10마리 구하기
SELECT ID, LENGTH
FROM FISH_INFO
ORDER BY LENGTH DESC, ID
LIMIT 10;
특정 물고기를 잡은 총 수 구하기
SELECT COUNT(*) AS FISH_COUNT
FROM FISH_INFO
WHERE
FISH_TYPE IN
(
SELECT FISH_TYPE
FROM FISH_NAME_INFO
WHERE FISH_NAME IN ('BASS', 'SNAPPER')
);
혹은 Inner Join을 사용할 수도 있다.
SELECT COUNT(I.ID) AS FISH_COUNT
FROM
FISH_INFO I
INNER JOIN FISH_NAME_INFO N
ON I.FISH_TYPE = N.FISH_TYPE
WHERE N.FISH_NAME IN ('BASS', 'SNAPPER');
728x90
'코딩 테스트 > SQL' 카테고리의 다른 글
[프로그래머스] SQL 고득점 Kit GROUP BY 정답 모음 (0) | 2024.03.27 |
---|---|
[프로그래머스] SQL 고득점 Kit SUM, MAX, MIN 정답 모음 (0) | 2024.03.25 |