본문 바로가기

전체 글

(17)
250404 프로그래머스 조건에 맞는 사용자와 총 거래금액 조회하기 [문제]USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요. [풀이]1) 회원ID(BOARD 테이블에서는 WRITER_ID, USER 테이블에서는 USER_ID), NICKNAME, SUM(BOARD 테이블의 PRICE) 조회2) 총거래금액은 TOTAL_SALES로 별칭3) USED_GOODS_BOARD 테이블과 USED_GOODS_USER 테이블 조인 (회원ID로 연결)4) USED_GOODS_BOARD 테이블의 STATUS 값 파악 후(SALE, DONE, RESERVED), 문제에 해당하는 값으로 조건 필터링5..
250403 프로그래머스 카테고리 별 도서 판매량 집계하기 [문제]2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요.결과는 카테고리명을 기준으로 오름차순 정렬해주세요.  [풀이]1) BOOK의 CATEGORY, BOOK_SALES의 총 판매량(SALES) 조회2) 총 판매량은 TOTAL_SALES로 별칭3) BOOK_SALES 테이블의 SALES_DATE에서 2022년 1월 조건 필터링(WHERE절)4) SALES_DATE에서 연-월 형식만 추출하여 '2022-01'과 비교 5) 카테고리별 도서 판매량이므로 카테고리로 그룹화6) 카테고리명 기준으로 오름차순 정렬하기 ** 날짜 함수**1) DATE_FORMAT()  ..WHERE DATE_FORMAT(날짜..
250327 프로그래머스 연도 별 평균 미세먼지 농도 조회하기 [문제]AIR_POLLUTION 테이블에서 LOCATION2가 '수원'인 데이터만을 대상으로 연도(YEAR) 별로 평균 미세먼지 농도를 구하는 SQL문을 작성하세요. 결과는 YEAR, PM10(평균 PM_VAL1), PM2.5(평균 PM_VAL2)로 구성되며, 평균값은 소수점 둘째 자리에서 반올림해야 합니다. 결과는 연도를 기준으로 오름차순 정렬하세요. [풀이]1) YEAR, PM10, PM2.5 조회2) YEAR()을 사용하여 날짜 컬럼에서 연도만 추출3) AVG() 집계 함수를 사용하여 평균값 미세먼지/초미세먼지 평균 농도 계산4) ROUND() 함수를 사용하여 평균값을 소수점 둘째 자리에서 반올림5) '수원' 데이터만 대상이므로, WHERE 절에서 데이터 필터링6) 연도별로 평균 농도 구하는 것이므..
250327 프로그래머스 조건에 맞는 아이템들의 가격의 총합 구하기 [문제]ITEM_INFO 테이블에서 RARITY 값이 'LEGEND'인 아이템들의 가격(PRICE)의 총합을 구하는 SQL문을 작성하세요. 결과 컬럼명은 TOTAL_PRICE로 설정하세요. [풀이]1) SUM(PRICE)를 사용하여 전체 가격 합산2) WHERE RARITY='LEGEND'로 필터링하여 특정 희귀도(RARITY)의 아이템만 선택하기3) 결과 컬럼명을 TOTAL_PRICE로 지정하기 [정답]SELECT SUM(PRICE) TOTAL_PRICEFROM ITEM_INFOWHERE RARITY='LEGEND';
250324 프로그래머스 자동차 평균 대여 기간 구하기 [문제] CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요. [풀이] 1) CAR_ID, AVERAGE_DURATION 조회 2) 평균 대여 기간이므로 AVG() 집계 함수 사용 3) AVERAGE_DURATION은 소수점 두번째 자리에서 반올림 -> ROUND(, 1) 4) 대여 일수를 빼는 것이므로 DATEDIFF() 함수를 사용하고, END_DAT..
250324 프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기 [문제] CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요. [풀이] 1) HISTORY_ID, CAR_ID, START_DATE, END_DATE, RENT_TYPE 조회 2) START_DATE, END_DATE를 따로 조회해봤을 때 날짜+시간 형식    -> 문제에서 요구하는 데이터 형식은 날짜이므로 DATE_FORMAT()을 이용하여 형식 변환하기 3) CASE~WHEN~THEN 문을 사용하여..
250323 프로그래머스 조건에 부합하는 중고거래 상태 조회하기 [문제]USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문 작성하기거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력 & 결과는 게시글 ID를 기준으로 내림차순 정렬[풀이]1) BOARD_ID, WRITER_ID, TITLE, PRICE, STATUS 조회2) CREATED_DATE가 2022-10-05 행 필터링3) 거래상태 조건문 활용해서 상태별로 출력4) 게시글 ID 내림차순 정렬 ** MySQL의 CASE-WHEN 구문 **CASE WHEN 조건1 THEN 값(수식)1 WHEN 조건2 THEN 값(수식)2 ELSE 값..
250321 프로그래머스 연도별 대장균 크기의 편차 구하기 [문제]분화된 연도(YEAR), 분화된 연도별 대장균 크기의 편차(YEAR_DEV), 대장균 개체의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 분화된 연도별 대장균 크기의 편차는 분화된 연도별 가장 큰 대장균의 크기 - 각 대장균의 크기로 구하며 결과는 연도에 대해 오름차순으로 정렬하고 같은 연도에 대해서는 대장균 크기의 편차에 대해 오름차순으로 정렬해주세요. [풀이]1) DIFFERENTIATION_DATE의 연도: YEAR, 연도별 가장 큰 대장균 크기-각 대장균 크기: YEAR_DEV로 별칭하고, ID도 조회2) 같은 연도에서 큰 값 구하고, 거기서 각 대장균 크기 빼기 -> PARTITION BY 3) 같은 연도에 대해 대장균 크기 편차 오름차순 정렬 ** PARTITION BY **분석..