Shonny Data

도식화 연습 - SQL 코드카타 #26 ~ #32 본문

Sparta_coding_club/SQL 코드카타

도식화 연습 - SQL 코드카타 #26 ~ #32

데이터분석쇼니 2024. 1. 23. 14:40

 

| #26. 입양 시각 구하기(1)

지문 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
해석 FROM ANIAML_OUTS
  SELECT 시간대, 입양 건수
  ORDER BY 시간대 순
  WHERE 09:00 ~ 19:59 까지 
도식

 

 

| #27. 진료과별 총 예약횟수 출력하기

지문 APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.

해석 FROM APPOINTMENT
  WHERE 2022년 5월에 예약한 환자 수 
  GROUP BY  진료과코드 별로 조회
  SELECT  예약일자, 진료과코드, 환자수(COUNT) ->5월예약건수 
  ORDER BY  진료과별 예약한 환자 수를 기준으로 오름차순
예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 
도식

 

 

| #28. 12세 이하인 여자 환자 목록 출력하기

지문 PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.
해석 (테이블)
 
  FROM PATIENT 테이블에서 PATIENT
  WHERE 12세 이하인 여자환자 AGE <= 12
AND GEND_CD = 'W'
  SELECT 환자이름, 환자번호, 성별코드, 나이, 전화번호 PT_NAME, PT_NO, GEND_CD, AGE, TLNO
    → 전화번호가 없는 경우, 'NONE'으로 출력  COALESCE(TLNO, "NONE")
  ORDER BY  나이를 기준으로 내림차순 
나이가 같다면 환자이름을 기준으로 오름차순 
ORDER BY AGE DESC, PT_NAME ASC

 

 

| #29. 인기있는 아이스크림

지문 상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성해주세요.

해석 (테이블)
출하번호
아이스크림 맛
상반기 아이스크림 총주문량
  FROM FIRST_HALF  
  SELECT 아이스크림 맛   
  GROUP BY  아이스크림 맛  
  ORDER BY  총주문량 기준 내림차순
출하번호 기준 오름차순 
 

 

 

| #30. 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

지문 CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요.

해석 (테이블)
자동차 ID, 
자동차 종류, 
일일 대여 요금(원), 
자동차 옵션 리스트
  FROM CAR_RENTAL_COMPANY_CAR  
  WHERE '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차 OPTIONS like "%통풍시트%" or 
OPTIONS like "%열선시트%" or 
OPTIONS like "%가죽시트%"

OPTIONS  REGEXP '통풍시트|열선시트|가죽시트'
  GROUP BY  자동차 종류 별로  GROUP BY CAR_TYPE
  SELECT  자동차 종류, 자동차 수 -> CARS 컬럼명  SELECT CAR_TYPE, COUNT(*) AS CARS
  ORDER BY  자동차 종류  ORDER BY CAR_TYPE

 

| #31.오랜 기간 보호한 동물(1)

지문 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.

  (테이블) ANIMAL_INS




ANIMAL_OUTS





해석 (풀이법) 1. 입양을 못 간 동물 →  ANIMAL_INS 에는 있지만 ANIMAL_OUTS에는 없는 동물
2. 가장 오래 보호소에 있던 동물 →  ANIMAL_INS 오름차순 LIMIT 3
도식

 

 

 

| #32. 카테고리 별 도서 판매량 집계하기

지문 2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 카테고리명을 기준으로 오름차순 정렬해주세요.
테이블 BOOK
 
  BOOK_SALES
 
도식

 

 

단순히 문제를 푸는 것에 집중하는 것이 아니라
추후 어떠한 SQL 문제든 풀 수 있도록 도식화 하는 연습을 하고 있다.
어떻게 하면 좀 더 쉽게 보일 수 있을지 계속해서 고민하고 있고, 
다른 사람들이 한 사례들도 보려고 노력하고 있다.
(하지만 잘 보이지는 않는 것 같다)

SQL 코드카타는 다시 복습으로 풀어보는 거라, 
이제 32번 이후부터  JOIN 문제가 많이 나올 것 같은데, 
어떻게 하면 JOIN을 좀 더 체계적으로 도식화 할 수 있을지 고민해볼 예정이다.