-
스파르타 코딩클럽 데이터 분석 D-DAY 11카테고리 없음 2025. 5. 7. 17:24
오늘은 팀원들과 함께 그동안 밀린 데일리 아티클을 풀어보았다.
1.sparta_employees 테이블에서 모든 직원의 이름(name)과 직급(position)을 선택하는 쿼리를 작성해주세요.SELECT name,position
FROM sparta_employees
2.sparta_employees 테이블에서 중복 없이 모든 직급(position)을 선택하는 쿼리를 작성해주세요.SELECT distinct position
FROM sparta_employees
3.sparta_employees 테이블에서 연봉(salary)이 40000과 60000 사이인 직원들을 선택하는 쿼리를 작성해주세요.SELECT *FROM sparta_employeesWHERE 40000 and 600004.sparta_employees 테이블에서 입사일(hire_date)이 2023년 1월 1일 이전인 모든 직원들을 선택하는 쿼리를 작성해주세요.SELECT hire_dateFROM sparta_employeesWHERE hire date < '2023-01-01'1)
5.products 테이블에서 제품 이름(product_name)과 가격(price)만을 선택하는 쿼리를 작성해주세요.SELECT product_name, priceFROM products6.products 테이블에서 제품 이름에 '프로'가 포함된 모든 제품을 선택하는 쿼리를 작성해주세요.SELECT *FROM products
WHERE product_name like '%프로%'
7.products 테이블에서 제품 이름이 '갤'로 시작하는 모든 제품을 선택하는 쿼리를 작성해주세요.SELECT *FROM poductsWHER product_name like '갤%'8.products 테이블에서 모든 제품을 구매하기 위해 필요한 돈을 계산하는 쿼리를 작성해주세요.SELECT sum(price) total_price
FROM products
9.orders 테이블에서 주문 수량(amount)이 2개 이상인 주문을 진행한 소비자의 ID(customer_id)만 선택하는 쿼리를 작성해주세요!SELECT customer_idFROM orderesWHERE amount >=210.orders 테이블에서 2023년 11월 2일 이후에 주문된 주문 수량(amount)이 2개 이상인 주문을 선택하는 쿼리를 작성해주세요!SELECT *FROM ordersWHERE order_date>;2023-11-02' AND amount >=211.orders 테이블에서 주문 수량이 3개 미만이면서 배송비(shipping_fee)가 15000원보다 비싼 주문을 선택하는 쿼리를 작성해주세요!SELECT *FROM ordersWHERE amount<3 and shipping_fee >1500012.orders 테이블에서 배송비가 높은 금액 순으로 정렬하는 쿼리를 작성해주세요!SELECT *FROM ordersORDER BY shipping_fee desc13.sparta_students 테이블에서 모든 학생의 이름(name)과 트랙(track)을 선택하는 쿼리를 작성해주세요!SELECT name,trackFROM sparta_students14.sparta_students 테이블에서 Unity 트랙 소속이 아닌 학생들을 선택하는 쿼리를 작성해주세요!SELECT *FROM sparta_studentsWHERE track <> 'Unity'15.sparta_students 테이블에서 입학년도(enrollment_year)가 2021년인 학생과 2023년인 학생을 선택하는 쿼리를 작성해주세요!SELECT *FROM sparta_studentsWHERE emrollment_year IN ('2021','2023')16.sparta_students 테이블에서 Node.js 트랙 소속이고 학점이 ‘A’인 학생의 입학년도를 선택하는 쿼리를 작성해주세요!SELECT enrollmenst_yearFROM sparta_studentsWHERE track = 'Node.js' and grade = 'A'17.team_projects 테이블에서 AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요!SELECT nameFROM team_projectsWHERE aws_cost >=4000018.team_projects 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요! 단, start_date < ‘2023-01-01’ 조건을 사용하지 말고 쿼리를 작성해주세요!SELECT *FROM team_projectsWHERE start_date like '%2022%19.team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요!SELECT *FROM team_projectsWHERE CURRENT_DATE BETWEEN start_date AND end_date20.team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요!SELECT name, DATEDIFF (start_date,end_date) as dateFROM team_projects
21.lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요! 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요. (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)SELECT name,rating,RANK() OVER (order by rating desc) raking_rateFROM lol_users22.
lol_users 테이블에서 가장 늦게 게임을 시작한(join_date) 유저의 이름을 선택하는 쿼리를 작성해주세요!SELECT nameFROM lol_usersWHERE join_date =(SELECT max(join_date)FROM lol_users)23.lol_users 테이블에서 지역별로 레이팅이 높은 순으로 유저들을 정렬해서 나열하는 쿼리를 작성해주세요!SELECT *FROM lol_usersORDER BY region,rating desc24.lol_users 테이블에서 지역별로 평균 레이팅을 계산하는 쿼리를 작성해주세요!SELECT region, AVG(rating) avg_ratingFROM lol_usresGROUP BY region25.lol_feedbacks 테이블에서 만족도 점수(satisfaction_score)에 따라 피드백을 내림차순으로 정렬하는 쿼리를 작성해주세요!SELECT *FROM lol_feedbacksORDER BY satisfaction_score desc26.lol_feedbacks 테이블에서 각 유저별로 최신 피드백을 찾는 쿼리를 작성해주세요!SELECT user_name,max(feedback_date)FROM lol_feedbacksGROUP BY user_name27.lol_feedbacks 테이블에서 만족도 점수가 5점인 피드백의 수를 계산하는 쿼리를 작성해주세요!SELECT count(*)FROM lol_feedbacksWHERE sarisfation_score = 528.lol_feedbacks 테이블에서 가장 많은 피드백을 남긴 상위 3명의 고객을 찾는 쿼리를 작성해주세요!SELECT user_name ,count(*) feedback_countFROM lol_feedbacksGROUP BY user_nameORDER BY feedback_count descLIMIT 329.lol_feedbacks 테이블에서 평균 만족도 점수가 가장 높은 날짜를 찾는 쿼리를 작성해주세요!SELECT user_name, avg(satisfaction_score) avg_scoreFROM lol_feedbacksGROUP BY user_nameORDER BY 2 descLIMIT 1
30.doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!SELECT nameFROM doctorsWHERE major = '성형외과'31.doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!SELECT major , count(*)FROM doctorsGROUP BY major32.doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!SELECT COUNT(*)FROM doctorsWHERE TIMESTAMPDIFF(Year, hire_date,CURRENT_DATE() ) >=533.doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!SELECT name, TIMESTAMPDIFF (Year, hire_date,CURRENT_DATE())FROM doctors34.patients 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!SELECT gender,count(*)FROM patientsGROUP BY gender35.patients 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!SELECT count(*)FROM patientsWHERE TIMESTAMPDIFF(YEAR,birth_date,CURRENT_DATE()) >=4036.patients 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!SELECT nameFROM patientsWHERE TIMESTAMPDIFF(YEAR, last_visit_date,CURRENT_DATE())>=137.patients 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요!SELECT count(*)FROM patientsWHERE birth_date like '%1980%'38.현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!SELECT count(*)FROM dpartments39.모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!SELECT e.name, d.name
FROM employees e INNER JOIN departments d on e.department_id = d.id40.'기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!SELECT e.nameFROM employees e INNER JOIN departments d on e.department_id = d.idWHERE d.name ='기술팀'41.부서별로 직원 수를 계산하는 쿼리를 작성해주세요!SELECT d.name, count(e.name)FROM departments d LEFT JOIN employees e on d.id = e.department_idGROUP BY d.id42.직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!SELECT d.nameFROM departments d LEFT JOIN employees e on d.id = e.department_idWHERE e.id is null43.'마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!SELECT e.nameFROM employees e INNER JOIN departments d on e.department_id = d.idWHERE d.name = '마케팅팀'44.모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!SELECT o.id, p.nameFROM products p INNER JOIN orders o on p.id = o.product_id45.총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!SELECT p.id, sum(p.price * o.quantity) total_priceFROM products p INNER JOIN orders o on p.id = o.product_idORDER BY 2 descLIMIT 146.각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!SELECT p.id, sum(o.quantity) total_quantityFROM products p INNER JOIN orders o on p.id = o.product_idGROUP BY p.id47.2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!SELECT p.nameFROM products p INNER JOIN orders o on p.id = o.product_idWHERE o.order_date > '2023-03-03'48.가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!SELECT p.name, sum(o.quantity) total_quantityFROM products p INNER JOIN orders o on p.id = o.product_idORDER BY 2 descLIMIT 149.각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!SELECT p.id, AVG(o.quantity) avg_quantityFROM products p INNER JOIN orders o on p.id = o.product_idGROUP BY p.id50.판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!SELECT p.id, p.nameFROM products p LEFT JOIN orders o on p.id = o.product_idWHERE o.id is null아티클 내용에 내가 배우지 못한 내용들이 많아서
기존에 정리해둔 SQLD 정리본을 찾아보면서도 풀었고,
챗 지피티한테 물어가면서도 풀었다.
다만 데이터 형식에 따라서 사용하는 함수가 달라지는 부분을 캐치하지 못한 부분이 아쉬웠다ㅜㅜ