[TIL] 7-9주차 코딩 스터디 과제

bmn.kim·2024년 9월 4일
0

데이터 배우기_SQL

목록 보기
7/24

아래와 같은 lol_feedbacks (LOL 피드백 테이블)이 있습니다.

iduser_namesatisfaction_scorefeedback_date
1르탄이52023-03-01
2배캠이42023-03-02
3구구이32023-03-01
4이션이52023-03-03
5구구이42023-03-04
  1. lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!
    select *
    from lol_feedbacks
    order by satisfaction_score desc

  2. lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!
    select user_name, max(feedback_date) latest_date
    from lol_feedbacks
    group by 1

  3. lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!
    select count(1) count_5
    from lol_feedbacks
    where satisfaction_score = 5

  4. lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!
    select user_name,
    count(1)
    from lol_feedbacks
    group by 1
    order by 2 desc
    limit 3

  5. lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!
    select feedback_date
    avg(satisfaction_score) avg
    from lol_feedbacks
    group by 1
    order by 2 desc
    limit 1

이제, 아래와 같은 doctors(의사) 테이블이 있습니다.

idnamemajorhire_date
1르탄이피부과2018-05-10
2배캠이성형외과2019-06-15
3구구이안과2020-07-20
  1. doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!
  • 정답 SELECT name FROM doctors WHERE major = ‘성형외과’;
  1. doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!
  • 정답 SELECT major, COUNT(*) FROM doctors GROUP BY major;
  1. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
  • 정답 SELECT COUNT(*) AS num_of_doctors FROM doctors WHERE hire_date <= DATE_SUB(CURDATE(), INTERVAL 5 YEAR);
  1. doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
  • 정답 SELECT name, DATEDIFF(CURDATE(), hire_date) AS working_days FROM doctors; 의사가 있으면 당연히 의사에게 진료받는 환자가 있겠죠? 아래와 같은 patients(환자) 테이블이 있습니다.
idnamebirth_dategenderlast_visit_date
1르탄이1985-04-12남자2023-03-15
2배캠이1990-08-05여자2023-03-20
3구구이1982-12-02여자2023-02-18
4이션이1999-03-02남자2023-03-17
  1. patients 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!
    select gender, count(1)
    from patients
    group by 1

  2. patients 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!
    select count(1)
    from patients
    WHERE birth_date <= DATE_SUB(CURDATE(), INTERVAL 40 YEAR)

  3. patients 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!
    select *
    from patients
    WHERE last_visit_date <= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)

  4. patients 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요!
    select count(1)
    from patients
    where year(birth_date) between 1980 and 1989

profile
문과생의 sql 배우기 많은 관심 부탁드립니다

0개의 댓글