2024/12 153

상품 별 오프라인 매출 구하기

[문제] PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. PRODUCT 테이블과 OFFLINE_SALE 테이블을 PRODUCT_ ID 기준으로 JOIN2. PRODUCT_CODE를 GROUP BY3. PRICE와 SALES_AMOUNT를 곱한 후 해당 컬럼을 SUM 한 뒤 SALES로 별칭4. SALES를 내림차순 정렬, 상품코드를 오름차순 정렬[정답]SELECT P.PRODUCT_CODE, SUM(P.PRICE * S.SALES_AMOUNT) AS SALESFROM PRODUCT..

카테고리 별 도서 판매량 집계하기

[문제] 2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요.결과는 카테고리명을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. BOOK 테이블과 BOOK_SALES 테이블을 BOOK_ID 기준으로 JOIN2. SALES_DATE가 22년 1월인 행을 필터링3. CATEGORY를 GROUP BY하고 SALES를 SUM 한뒤 TOTAL_SALES로 지정4. CATEGORY 기준으로 오름차순 정렬 [정답]SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALESFROM BOOK BJOIN BOOK_SALES SON B.BOOK_ID = S.BOOK_IDWHERE..

오랜 기간 보호한 동물

[문제] 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. [단계별 풀이] 1. ANIMAL_INS (I)테이블과  ANIMAL_OUTS (O)테이블을 ANIMAL_ID을 기준으로 LEFT JOIN2. OUTS 테이블의 ANIMAL_ID가 NULL 행만 필터링3. INS 테이블의 이름,  보호 시작일을 선택4. INS 테이블의 보호시작일로 오름차순 정렬5. LIMIT 으로 3행 제한[정답]SELECT I.NAME, I.DATETIMEFROM ANIMAL_INS ILEFT JOIN ANIMAL_OUTS OON I.ANIMAL_ID = O.ANIMAL_IDWHERE O.A..

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

[문제] CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. OPTIONS에 통풍시트가 있거나 열선시트, 가죽시트가 있는 행만 필터링 (REGEXP 활용)2. 자동차 종류별로 GROUP BY3. CAR_ID를 COUNT 한 후 컬럼명을 CARS로 지정4. CAR_TYPE으로 오름차순 정렬[정답]SELECT CAR_TYPE, COUNT(CAR_ID) AS CARSFROM CAR_RENTAL_COMPANY_CAR WHERE OPT..

[241210] TIL

SQL 코드카타 29번까지 블로그에 정리하였다. 빠르게 76번까지 끝내고 파이썬 코드카타 문제들도 정리해보자. 파이썬 코드카타 문제들은 어떻게 해결하면 좋을지 아이디어를 떠올리고 해당 아이디어를 의사코드나 일반 언어로 적어보자. 그 뒤에 코드를 작성하고 시간복잡도도 분석해보는 방식으로 정리를 하자. 데이터프레임 groupby와 pivot_table, crosstab 부분을 마무리했다. 내일은 날짜, 시간 타입에 대해서 배울 예정이다. 복습과 실습이 많이 진행되어야할 것 같다. 한두번 가지고는 잘 기억에 남지 않을 것 같다. 자료구조, 알고리즘을 책과 강의를 통해 병행하고 있다. 이번 과정이 끝날 때쯤 기본적인 자료구조와 알고리즘에 대해서 완전히 숙지하고 프로그래머스 lv2 까지 풀 수 있도록 꾸준히 해보자.

TIL 2024.12.10

인기있는 아이스크림

[문제] 상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성해주세요. [단계별 풀이] 1. FALVOR컬럼만 선택한다2. TOTAL_ORDER 컬럼을 내림차순 정렬하고, SHIPMENT_ID를 오름차순 정렬한다[정답]SELECT FLAVORFROM FIRST_HALFORDER BY TOTAL_ORDER DESC, SHIPMENT_ID

12세 이하인 여자 환자 목록 출력하기

[문제] PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 테이블에서 AGE가 12 이하이면서 GEND_CD가 'W'인 행을 필터링한다2. 환자이름, 환자번호, 성별코드, 나이, 전화번호를 선택하는데 IFNULL 함수를 사용해서 전화번호가 NULL이면 'NONE'으로 대체한다3. 나이를 내림차순 정렬, 환자이름으로 오름차순 정렬한다[정답]SELECT PT_NAME, PT_NO, GEND_CD, AGE, ..

진료과별 총 예약 횟수 출력하기

[문제] APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요. [단계별 풀이] 1. 테이블에서 APNT_YMD가 2022년 5월인 행을 필터링 한다2. 진료과코드를 GROUP BY 해준다3. COUNT 함수로 PT_NO의 행을 센다 (AS 5월예약건수)4. 5월예약건수, 진료과 코드를 정렬한다SELECT MCDP_CD AS 진료과코드, COUNT(PT_NO) AS 5월예약건수FROM APPOINTMENTWHERE APNT_YMD LIK..

입양 시각 구하기

[문제] 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. [단계별 풀이] 1. HOUR 함수로 DATETIME 컬럼에서 시간만 추출한 뒤 HOUR 별칭으로 선택한다2. 테이블에서 HOUR가 9 ~ 19 사이인 행만 필터링한다3. HOUR를 GROUP BY 해준다4. COUNT 함수로 ANIMAL_ID의 행 수를 세어준다5. HOUR 순으로 정렬한다[정답]SELECT HOUR(DATETIME) AS HOUR, # HOUR는 숫자값을 반환한다 COUNT(ANIMAL_ID) AS COUNTFROM ANIMAL_OUTSWHERE..

고양이와 개는 몇 마리 있을까

[문제] 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요. [단계별 풀이] 1. ANIMAL_TYPE 컬럼을 살펴보면 개와 고양이 뿐이므로 해당 컬럼을 GROUP BY 해준다2. COUNT 함수를 사용해서 ANIMAL_ID컬럼의 행의 수를 센다3. ANIMAL_TYPE 순으로 정렬한다[정답]SELECT ANIMAL_TYPE, COUNT(ANIMAL_ID) AS countFROM ANIMAL_INSGROUP BY ANIMAL_TYPEORDER BY ANIMAL_TYPE