[TIL] 2025.03.10

성소희·2025년 3월 10일

본 캠프 15일차!


🧑🏻‍💻 [TODAY'S SQL 코드카타]

1) String, Date문 - '연도 별 평균 미세먼지 농도 조회하기'

AIR_POLLUTION 테이블은 전국의 월별 미세먼지 정보를 담은 테이블입니다. AIR_POLLUTION 테이블의 구조는 다음과 같으며 LOCATION1, LOCATION2, YM, PM_VAL1, PM_VAL2은 각각 지역구분1, 지역구분2, 측정일, 미세먼지 오염도, 초미세먼지 오염도를 의미합니다.


Q. AIR_POLLUTION 테이블에서 수원 지역의 연도 별 평균 미세먼지 오염도와 평균 초미세먼지 오염도를 조회하는 SQL문을 작성해주세요. 이때, 평균 미세먼지 오염도와 평균 초미세먼지 오염도의 컬럼명은 각각 PM10, PM2.5로 해 주시고, 값은 소수 셋째 자리에서 반올림해주세요.
결과는 연도를 기준으로 오름차순 정렬해주세요.

👉조회 시 보여야 하는 데이터 : 수원 지역 별 평균 미세먼지 오염도, 평균 초미세먼지 (AVERAGE)
✔️조건 : 수원 지역 연도별 (WHERE ~ = '수원' / GROUP BY ~ )
✔️조건2 : 미세먼지 오염도, 평균 초미세먼지 오염도 컬럼명 각각 PM10, PM2.5
✔️조건3 : 평균 오염도 셋째 자리에서 반올림(ROUND)
✔️조건4 : 연도 기준 오름차순(ORDER BY ~)



*프로그래머스에서는 YEAR로 낸 작성한 쿼리문은 맞게 하고, DATE_FORMAT함수가 쓰인 쿼리문은 틀렸다고 한다..프로그래머스 문제인가..

2) String, Date문 - '중성화 여부 파악하기'

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


보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다.

Q. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요.

👉조회 시 보여야 하는 데이터 : 동물의 아이디와 이름, 중성화 여부
✔️조건 : 수원 지역 연도별 (WHERE ~ = '수원' / GROUP BY ~ )
✔️조건2 : 중성화가 되었다면 'O', 아니라면 'X'라고 표시
✔️조건3 : 동물의 아이디 순으로 조회


3) String, Date문 - '조건에 부합하는 중고거래 상태 조회하기'

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


Q. USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.

👉조회 시 보여야 하는 데이터 : 동물의 아이디와 이름, 중성화 여부
✔️조건 : 2022년 10월 5일에 등록된 게시물 (WHERE DATE_FORMAT( ~ ,'%Y-%m-%d') like
✔️조건2 : 거래상태가 SALE => 판매중, RESERVED => 예약중, DONE => 거래완료로 분류하여 출력(CASE WHEN ~, INSTR ~)
✔️조건3 : 게시글 id 기준 내림차순(ORDER BY ~ DESC)

4) String, Date문 - '조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기'

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


USED_GOODS_FILE 테이블은 다음과 같으며 FILE_ID, FILE_EXT, FILE_NAME, BOARD_ID는 각각 파일 ID, 파일 확장자, 파일 이름, 게시글 ID를 의미합니다.

Q. USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.

👉조회 시 보여야 하는 데이터 : 파일경로(/home/grep/scr/ ~)
✔️조건 : 게시글 id 기준 디렉토리 구분 (/home/grep/scr/board_id ~ )
✔️조건2 : 파일 이름은 파일 ID, 파일 이름, 파일 확장자
✔️조건3 : 게시글 id 기준 내림차순 (ORDER BY ~ DESC)
✔️조건4 : 조회수가 가장 높은 게시물은 하나만 존재 (WHERE ~서브쿼리)

5) String, Date문 - '조건별로 분류하여 주문상태 출력하기'

다음은 식품공장의 주문정보를 담은 FOOD_ORDER 테이블입니다. FOOD_ORDER 테이블은 다음과 같으며 ORDER_ID, PRODUCT_ID, AMOUNT, PRODUCE_DATE, IN_DATE,OUT_DATE,FACTORY_ID, WAREHOUSE_ID는 각각 주문 ID, 제품 ID, 주문양, 생산일자, 입고일자, 출고일자, 공장 ID, 창고 ID를 의미합니다.


Q. FOOD_ORDER 테이블에서 2022년 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 2022년 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.

👉조회 시 보여야 하는 데이터 : 주문 ID, 제품 ID, 출고일자, 출고여부
✔️조건 : 2022년 5월 1일 기준 출고 여부 표시(2022년 5월 1일까지는 출고완료, 이 후 날짜는 출고 대기, 미정은 출고미정으로 출력 )
✔️조건2 : 주문 ID 기준 오름차순


💡[TODAY'S INSIGHT]

✔️ LIKE 뒤에 리스트처럼 오지 X
EX) WHERE ~ LIKE '%Spayed%' or '%Nuetered%' (잘못된 표현)
👉 조건이 A거나 B면 O가 나와야 된다인 경우
CASE WHEN 컬럼명 LIKE = '%A%' OR 컬럼명 LIKE '%B%' THEN 'O'

✔️ 날짜형 데이터의 날짜 비교 시, 날짜 양 옆에 따옴표를 꼭 씌워줘야 함!
👉 따옴표가 없으면 날짜를 숫자값으로 인식해 오류 나거나 잘못된 결과를 출력할 수 있기 때문!

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

0개의 댓글