728x90
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit
- select문을 풀어보려고 한다.
1. 평균 일일 대여 요금 구하기
select round(avg(c.DAILY_FEE), 0) as `AVERAGE_FEE` from `CAR_RENTAL_COMPANY_CAR` c where CAR_TYPE = 'SUV';
- 평균 구하기: AVG
- 반올림하기: ROUND(값, 자릿수)
2. 과일로 만든 아이스크림 고르기
SELECT fh.FLAVOR
from FIRST_HALF as fh
left join ICECREAM_INFO as ii
on fh.FLAVOR = ii.FLAVOR
where fh.TOTAL_ORDER > 3000 and ii.INGREDIENT_TYPE = 'fruit_based'
order by fh.TOTAL_ORDER DESC;
- join _ on _
3. 3월에 태어난 여성 회원 목록 출력하기
SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE DATE_OF_BIRTH LIKE "%-03-%" AND GENDER = 'W'
AND TLNO 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 MONTH(DATE_OF_BIRTH) = 3
AND GENDER = 'W'
AND TLNO IS NOT NULL;
- MONTH() 함수로 몇 월인지 구할 수 있다
- DATE_FORMAT(__, '%Y-%m-%d')로 출력 형식을 지정할 수 있다
4. 서울에 위치한 식당 목록 출력하기
SELECT rr.REST_ID, ri.REST_NAME, ri.FOOD_TYPE, ri.FAVORITES, ri.ADDRESS, round(avg(rr.REVIEW_SCORE), 2) as SCORE
FROM REST_INFO ri JOIN REST_REVIEW rr
ON ri.REST_ID = rr.REST_ID
GROUP BY rr.REST_ID
HAVING ri.ADDRESS like "서울%"
ORDER BY SCORE DESC, ri.FAVORITES DESC;
- REST_ID를 기준으로 GROUP BY
- HAVING을 통해 필터링
5. 흉부외과 또는 일반외과 의사 목록 출력하기
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') as HIRE_YMD FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
- 이전 문제를 풀었다면 어렵지 않게 풀 수 있다
6. 인기있는 아이스크림
SELECT FLAVOR FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC;
- 쉽다
7. 강원도에 위치한 생산공장 목록 출력하기
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID;
8. 12세 이하인 여자 환자 목록 출력하기
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE')
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;
- IFNULL을 이용하여 null일 때 디폴트 값을 넣어줄 수 있다
728x90
'database' 카테고리의 다른 글
[DB] Unique index와 pk (0) | 2023.09.15 |
---|---|
위키만들기 - 글의 history를 저장하는 방법 (0) | 2023.08.08 |
[MySQL, MariaDB] procedure(프로시저) 생성, 수정, 삭제 (0) | 2023.02.06 |
ORM(Object Relational Mapping)이란? (4) | 2022.10.02 |
H2 데이터베이스 (3) | 2022.10.01 |