[TIL] 2025.03.07

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

본 캠프 14일차!
이제 MYSQL에 파이썬까지 같이 공부해야 한다..!
그리고 오늘 새로운 커리큘럼이 생겼는데 바로 QCC!

QCC는 Query Challenge Cycle의 줄임말로
기업 SQL 테스트와 유사한 난이도로 구성된 실전 문제를 풀어보고 해설하는 시간이다.
오늘이 바로 그 첫날!
주어진 시간 내에 2문제를 풀고 제출하면 되는 거였는데
1번 문제는 금방 풀었지만...
2번 문제는 테이블 개수가 4개나 되고 SQL 코드카타와 달리 시간제한이 생겨서 긴장됐다.
JOIN을 2개까지만 해봤는데 갑자기 테이블 3개를 조인하려니...뭔가 문제에서 요구하는 조건들은 뭔지 알겠는데 어느 테이블부터 조인을 해야하는지 생각이 엉켜버렸다ㅎㅎ
JOIN 활용하는 실습문제를 많이 풀어봐야겠다는 다짐을 하게 된 하루..


[TODAY'S SQL 코드카타]

1) String, Date문 - '루시와 엘라 찾기'

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

Q. 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요.


이때 결과는 아이디 순으로 조회해주세요.

👉조회 시 보여야 하는 데이터 : 동물의 아이디, 이름, 성별 및 중성화 여부
✔️조건 : 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물
✔️조건2 : 아이디 순으로 조회

2) String, Date - '루시와 엘라 찾기'

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

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

Q. FISH_INFO 테이블에서 2021년도에 잡은 물고기 수를 출력하는 SQL 문을 작성해주세요.
이 때 컬럼명은 'FISH_COUNT' 로 지정해주세요.

👉조회 시 보여야 하는 데이터 : 동물의 이름(NAME)
✔️조건 : 동물 보호소에 가장 먼저 들어온 동물(ORDER BY ~ ASC)

!

3) String, Date - '조건에 맞는 사용자 정보 조회하기'

다음은 중고 거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고 거래 게시판 첨부파일 정보를 담은 USED_GOODS_USER 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS는 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다.

USED_GOODS_USER 테이블은 다음과 같으며 USER_ID, NICKNAME, CITY, STREET_ADDRESS1, STREET_ADDRESS2, TLNO는 각각 회원 ID, 닉네임, 시, 도로명 주소, 상세 주소, 전화번호를 의미합니다.

Q. USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요. 이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬해주세요.

👉조회 시 보여야 하는 데이터 : 사용자의 ID, 닉네임, 전체주소, 전화번호
✔️조건 : 중고 거래 게시물을 3건 이상 등록한 사람
✔️조건2 : 전체 주소는 시, 도로명 주소, 상세 주고 함께 출력되게(CONCAT)
✔️조건3 : 전화번호 XXX - XXXXX-XXXX 같은 형태로 하이픈 문자열(-) 삽입 (&)
✔️조건4 : 회원ID 기준 내림차순(ORDER BY ~ DESC)

4) String, Date - '년, 월, 성별 별 상품 구매 회원 수 구하기'

다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블과 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블 입니다.USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다.

GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다.

ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며, ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.
동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.

Q. USER_INFO 테이블과 ONLINE_SALE 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.

👉조회 시 보여야 하는 데이터 : 상품 구매한 회원의 수
✔️조건 : 년, 월, 성별 별로 집계(group by ~ )
✔️조건2 : 전체 주소는 시, 도로명 주소, 상세 주고 함께 출력되게(CONCAT)
✔️조건3 : 전화번호 XXX - XXXXX-XXXX 같은 형태로 하이픈 문자열(-) 삽입 (&)
✔️조건4 : 회원ID 기준 내림차순(ORDER BY ~ DESC)


파이썬도 이제 막 공부하기 시작했는데 QCC도 생기고 차주엔 개인 과제도 생길 예정...점점 해야될 게 많아지니 마음이 조급해진다.
하지만 어쩌겠어! 해내야지!

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

0개의 댓글