[7단계] 랭크게임 하다가 싸워서 피드백 남겼어요…
25. lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!
내림차순은 DESC, 오름차순은 ASC
SELECT *
FROM lol_feedbacks
ORDER BY satisfaction DESC
26. lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!
- 유저별로 최신 피드백을 찾아야하기 때문에.
- feedback_date 가 가장 높은 서브쿼리를 만들어서, 피드백을 출력한다.
SELECT *
FROM lol_feedbacks t1
WHERE feedback_date = (
SELECT MAX(feedback_date)
FROM lol_feedbacks t2
WHERE t1.user_name = t2.user_name
);
27. lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!
- 만족도 점수가 5점이다. 라는 조건을 주어야한다. 그리고 해당 피드백의 수를 계산하는 것이기 때문에 Count 라는 함수도 사용해야한다.
SELECT count(*)
FROM lol_feedbacks
WHERE satisfaction_score=5
28. lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!
- 가장많은 피드백을 남긴 사람을 어떻게 구하나? 일단 USER 별로 count를 해야한다.
- 상위 3개를 원한다? 그러면 ORDER BY로 순서대로 나열후 LIMIT로 출력값을 3개로 제한하면 된다.
SELECT user_name, count(user_name) as count
FROM lol_feedbacks
GROUP BY user_name
ORDER BY count DESC
LIMIT 3
29. lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!
- GROUP BY 해서, AVG 주기. 날짜별로 그룹핑 해서 > AVG(satisfaction) 하면 될듯
SELECT feedback_date
FROM lol_feedbacks
GROUP BY feedback_date
ORDER BY AVG(satisfaction_score) DESC
LIMIT 1;
[8단계] LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.
30. doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!
SELECT name
FROM doctors
WHERE major = '성형외과'
31. doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!
SELECT major ,count(name)
FROM doctors
GROUP BY major
32. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
- CURDATE()와 hire_date 의 차이를 구한 후, 5년 이상(5*356) 을 조회.
SELECT count(*)
FROM doctors
WHERE DATEDIFF(CURDATE(), hire_date) >= 5*365
33. doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
SELECT name, DATEDIFF(CURDATE(), hire_date)
FROM doctors
[9단계] 아프면 안됩니다! 항상 건강 챙기세요!
34. patients 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!
SELECT gender, count(*)
FROM patients
GROUP BY gender
35.patients 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!
- TIMESTEMPDIFF 를 통해서 YEAR 계산을 통해 40세 이상 조회
SELECT COUNT(*)
FROM patients
WHERE TIMESTAMPDIFF(YEAR, birth_date, CURDATE()) >= 40;
36.patients 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!
- DATEDIFF를 통해서 365일 (1년) 이상 조회
SELECT COUNT(*)
FROM patients
WHERE DATEDIFF(CURDATE(), last_visit_date)>= 365
37. patients 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요!
- 1980년대이니, 출생년도가 1980~1989 사이여야함.
SELECT COUNT(*)
FROM patients
WHERE YEAR(birth_date) BETWEEN 1980 AND 1989;
오늘은 일단 끘 : >
밥 먹고 10단계랑 마지막 문제 풀기 !
'백엔드 부트캠프[사전캠프] > 문제풀이' 카테고리의 다른 글
[내일배움캠프-사전캠프] SQL 단계별 문제 풀이 (0) | 2025.01.21 |
---|---|
[내일배움캠프-사전캠프] SQL 단계별 문제 풀이 (0) | 2025.01.21 |
[내일배움캠프-사전캠프] SQL 단계별 문제 풀이 (0) | 2025.01.19 |
[내일배움캠프-사전캠프] SQL 단계별 문제 풀이 (0) | 2025.01.18 |
[내일배움캠프-사전캠프] SQL 단계별 문제 풀이 (0) | 2025.01.17 |