[TIL] 2025.03.05 - 2025.03.06

성소희·2025년 3월 6일
post-thumbnail

본캠프 12-13일차
어제 VELOG 오류로 게시도 임시저장도 제대로 되지 않아
오늘 어제 오늘 일자 TIL을 한번에 올린다!


[3/5일자]

[TODAY'S SQL 코드카타]

1) '조건에 맞는 아이템들의 가격의 총합 구하기'

다음은 어느 한 게임에서 사용되는 아이템들의 아이템 정보를 담은 ITEM_INFO 테이블입니다. ITEM_INFO 테이블은 다음과 같으며, ITEM_ID, ITEM_NAME, RARITY, PRICE는 각각 아이템 ID, 아이템 명, 아이템의 희귀도, 아이템의 가격을 나타냅니다.

Q. ITEM_INFO 테이블에서 희귀도가 'LEGEND'인 아이템들의 가격의 총합을 구하는 SQL문을 작성해 주세요. 이때 컬럼명은 'TOTAL_PRICE'로 지정해 주세요.

👉조회 시 보여야 하는 데이터 : 가격의 총합(SUM(PRICE))
✔️조건 : 희귀도가 'LEGEND'인(WHERE ~ = 'LEGEND')
✔️조건2 : 조건 2 컬럼명은 TOTAL_PRICE로 지정

작성한 쿼리문은

2) '물고기 종류 별 대어 찾기'

낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.

단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다.


FISH_NAME_INFO 테이블은 물고기의 이름에 대한 정보를 담고 있습니다. FISH_NAME_INFO 테이블의 구조는 다음과 같으며, FISH_TYPE, FISH_NAME 은 각각 물고기의 종류(숫자), 물고기의 이름(문자) 입니다.

Q. 물고기 종류 별로 가장 큰 물고기의 ID, 물고기 이름, 길이를 출력하는 SQL 문을 작성해주세요.
물고기의 ID 컬럼명은 ID, 이름 컬럼명은 FISH_NAME, 길이 컬럼명은 LENGTH로 해주세요.
결과는 물고기의 ID에 대해 오름차순 정렬해주세요.
단, 물고기 종류별 가장 큰 물고기는 1마리만 있으며 10cm 이하의 물고기가 가장 큰 경우는 없습니다.

👉조회 시 보여야 하는 데이터 : 물고기의 ID, 물고기 이름, 길이
✔️조건 : 물고기 종류 별로 가장 큰 물고기는 1마리만 있음
✔️조건2 : 물고기 ID 기준 오름차순(ORDER BY ~ )

작성한 쿼리문은

3) '잡은 물고기 중 가장 큰 물고기의 길이 구하기'

낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.

단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다.

Q. FISH_INFO 테이블에서 잡은 물고기 중 가장 큰 물고기의 길이를 'cm' 를 붙여 출력하는 SQL 문을 작성해주세요.
이 때 컬럼명은 'MAX_LENGTH' 로 지정해주세요.

👉조회 시 보여야 하는 데이터 : 가장 큰 물고기 길이 (MAX(LENGTH ~)
✔️조건 : 길이에 'cm'를 같이 출력 (concat (MAX(LENGTH),'cm'))
✔️조건2 : 컬럼명 'MAX_LENGTH'로 지정

작성한 쿼리문은

업로드중..

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

다음은 어느 의류 쇼핑몰에서 판매중인 상품들의 상품 정보를 담은 PRODUCT 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블 입니다. PRODUCT 테이블은 아래와 같은 구조로 PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.

상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.
OFFLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 OFFLINE_SALE_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 오프라인 상품 판매 ID, 상품 ID, 판매량, 판매일을 나타냅니다.

동일한 날짜, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.
Q. PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.

👉조회 시 보여야 하는 데이터 : 매출액 합계(SUM(PRICE *SALES_AMOUNT))
✔️조건 : 상품코드 별 (GROUP BY ~ )
✔️조건2 : 매출액 기준 내림차순(ORDER BY ~ DESC)
✔️조건3 : 상품코드 기준 오름차순 (ORDER BY ~ ASC)

작성한 쿼리문은

업로드중..

5) '없어진 기록 찾기'

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. ANIMAL_OUTS 테이블의 ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키입니다.

Q. 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.

👉조회 시 보여야 하는 데이터 : 동물의 ID, 이름
✔️조건 : 입양간 기록 있으나 보호소에 들어온 기록 없는(LEFT JOIN ~ WHERE ~ IS NULL)
✔️조건2 : 동물 ID 기준으로 조회

업로드중..


[3/6일자]

[TODAY'S SQL 코드카타]

1) '이름에 el이 들어가는 동물 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

Q. 보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.

👉조회 시 보여야 하는 데이터 : 동물 ID, 이름
✔️조건 : 개 (WHERE ANIMAL_TYPE='DOG')
✔️조건2 : 이름에 'EL'이 들어가는 (WHERE NAM LIKE '%el%')
✔️조건3 : 이름 기준 조회 (ORDER BY ~ )

작성한 쿼리문은

2) '카테고리 별 상품 개수 구하기'

다음은 어느 의류 쇼핑몰에서 판매중인 상품들의 정보를 담은 PRODUCT 테이블입니다. PRODUCT 테이블은 아래와 같은 구조로 되어있으며, PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.
상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.

Q. PRODUCT 테이블에서 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요.

👉조회 시 보여야 하는 데이터 : 상품 카테고리 코드(앞 2자리)별 상품 개수
✔️조건 : 앞 2자리 (SUBSTR(~,1,2)
✔️조건2 : 코드 별 (GROUP BY ~)
✔️조건3 : 카테고리 기준 오름차순 (ORDER BY ~)

작성한 쿼리문은

3) '잔챙이 잡은 수 구하기'

낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.
단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다.


Q. 잡은 물고기 중 길이가 10cm 이하인 물고기의 수를 출력하는 SQL 문을 작성해주세요.

물고기의 수를 나타내는 컬럼 명은 FISH_COUNT로 해주세요.**

👉조회 시 보여야 하는 데이터 : 물고기의 수
✔️조건 : 물고기 길이가 10CM 이하인
✔️조건2 : 물고기 수 컬럼명 FISH_COUNT

작성한 쿼리문은

업로드중..

4) '특정 옵션이 포함된 자동차 리스트 구하기'

다음은 어느 자동차 대여 회사에서 대여중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블입니다. CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.

자동차 종류는 '세단', 'SUV', '승합차', '트럭', '리무진' 이 있습니다. 자동차 옵션 리스트는 콤마(',')로 구분된 키워드 리스트(옵션 리스트 값 예시: '열선시트', '스마트키', '주차감지센서')로 되어있으며, 키워드 종류는 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트' 가 있습니다.


Q. CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.

👉조회 시 보여야 하는 데이터 : 자동차 리스트 (=전체 *)
✔️조건 : '네비게이션' 옵션이 포함된 (WHERE ~ LIKE '%네비게이션%')
✔️조건2 : 자동차 ID 기준 내림차순(ORDER BY ~ DESC)

작성한 쿼리문은

업로드중..

5) '서울에 위치한 식당 목록 출력하기'

다음은 식당의 정보를 담은 REST_INFO 테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다.

REST_REVIEW 테이블은 다음과 같으며 REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, REVIEW_TEXT,REVIEW_DATE는 각각 리뷰 ID, 식당 ID, 회원 ID, 점수, 리뷰 텍스트, 리뷰 작성일을 의미합니다.

Q. REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.

👉조회 시 보여야 하는 데이터 : 식당 ID, 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수
✔️조건 : 리뷰 평균 점수는 소수점 세 번째 자리에서 반올림 (ROUND(AVG(~),2))
✔️조건2 : 평균 점수 기준 내림차순(ORDER BY ~ DESC)
✔️조건3 : 즐겨찾기수 기준 내림차순(ORDER BY ~ DESC)

작성한 쿼리문은

업로드중..


💡[TODAY'S INSIGHT]

오늘은 최근에 바뀐 새로운 조원들과 아티클 스터디를 진행했다.
아티클 주제는 '양질의 데이터를 판별하는 5가지 방법:①데이터 양은 충분한가?'

팀원들과 나눈 인사이트를 정리해보면 다음과 같다.
✔️ 데이터의 수집과 분석은 주체에 따라 중요도가 달라진다
데이터를 활용하는 목적과 상황이 다르기 때문에 유동적으로 접목하는 것이 중요!
✔️ 양질의 데이터 확보는 중요하지만, 목적에 맞는 정확한 데이터 판단이 더욱 중요하다
데이터 분석가는 단순히 많은 데이터를 수집하는 것보다, 신뢰할 수 있는 데이터를 선별하고 분석하는 역량이 필요함
✔️ 데이터 수집 과정에서 양과 질의 균형이 필요하다
무조건 많은 데이터 확보하는 것보다, 적절한 수준에서 균형을 맞추는 것이 중요함
✔️ 데이터 분석가는 데이터의 의도와 품질을 파악하는 능력이 필요하다
수집된 데이터가 어떤 목적과 배경에서 만들어졌는지를 이해하는 것이 중요하고,
이를 통해 분석 결과의 신뢰성을 높일 수 있음
✔️ 데이터 분석 역량뿐만 아니라 수집자의 역량도 중요한 요소다

profile
매일 한 걸음, 데이터 분석 실무자로 성장하는 기록

0개의 댓글