본문 바로가기
반응형

DBMS61

[프로그래머스 SQL] Lv. 2 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 ※ 문제 ※ 코드SELECT CAR_TYPE, COUNT(*) AS CARSFROM CAR_RENTAL_COMPANY_CARWHERE FIND_IN_SET('통풍시트', OPTIONS) > 0 OR FIND_IN_SET('열선시트', OPTIONS) > 0 OR FIND_IN_SET('가죽시트', OPTIONS) > 0GROUP BY CAR_TYPEORDER BY CAR_TYPE ASC; ※ 풀이해당 문제 또한 푸는 방법이 다양하지만 크게 2가지만 보겠습니다. 1. 제가 작성한 코드와 같이 WHERE ~ FIND_IN_SET 함수를 쓰는 것 MySQL에는 콤마로 구분된 문자열에서 특정 단어를 찾는 함수인 FIND_IN_SE.. 2025. 6. 24.
[프로그래머스 SQL] Lv. 2 재구매가 일어난 상품과 회원 리스트 구하기 ※ 문제 ※ 코드SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_IDHAVING COUNT(*) >= 2ORDER BY USER_ID, PRODUCT_ID DESC; ※ 풀이처음으로 2개 이상의 COLUMN을 이용한 GROUPING 문제가 등장했습니다. 우선 USER_ID로 그룹화를 진행하면 각 USER_ID 별로 모든 구매 기록이 구해질 것입니다.다음으로 PRODUCT_ID로 그룹화를 진행하면 PRODUCT_ID 별로 제품별 판매 개수, 판매 일자 등이 나오게 됩니다. 이걸 HAVING 절에서 COUNT(*)를 구하면 각 고객이 제품 별로 구매한 개수가 나오게 됩니다. 이 값이 2 이상이라.. 2025. 6. 24.
[프로그래머스 SQL] Lv. 2 특정 물고기를 잡은 총 수 구하기 ※ 문제 ※ 코드SELECT COUNT(*) FISH_COUNTFROM FISH_INFO I JOIN FISH_NAME_INFO N ON I.FISH_TYPE = N.FISH_TYPEWHERE FISH_NAME IN ('BASS', 'SNAPPER'); ※ 풀이간단합니다. 그냥 FISH_TYPE으로 JOIN 한 뒤, FISH_NAME 또는 FISH_TYPE으로 FILTERING 하고 COUNT(*)를 구해주면 끝입니다. 2025. 6. 18.
[프로그래머스 SQL] Lv. 2 노선별 평균 역 사이 거리 조회하기 ※ 문제 ※ 코드SELECT ROUTE, CONCAT(ROUND(SUM(D_BETWEEN_DIST), 1), 'km') TOTAL_DISTANCE, CONCAT(ROUND((SUM(D_BETWEEN_DIST)/COUNT(*)), 2), 'km') AVERAGE_DISTANCEFROM SUBWAY_DISTANCEGROUP BY ROUTEORDER BY ROUND(SUM(D_BETWEEN_DIST), 1) DESC; ※ 풀이이번 문제는 km 단위 붙이는 부분을 중점적으로 보면 되겠습니다.MySQL 기준 concat 함수를 이용하면 char로 변환 가능한 모든 객체에 대하여 자동으로 문자열 변환과 concat 기능을 수행해줍니다. (즉, .. 2025. 6. 15.
[프로그래머스 SQL] Lv. 2 조건에 부합하는 중고거래 상태 조회하기 ※ 문제 ※ 코드SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, CASE WHEN STATUS = 'SALE' THEN '판매중' WHEN STATUS = 'RESERVED' THEN '예약중' ELSE '거래완료' END STATUSFROM USED_GOODS_BOARDWHERE DATE_FORMAT(CREATED_DATE, '%Y-%m-%d') = '2022-10-05'ORDER BY BOARD_ID DESC; ※ 풀이기본적으로 '%Y-%m-%d' 형태로 되어 있어서 DATE_FORMAT 함수를 쓰지 않아도 되지만 그렇지 않은 상황도 가정하.. 2025. 6. 15.
[프로그래머스 SQL] Lv. 2 자동차 평균 대여 기간 구하기 ※ 문제 ※ 코드/*SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AVERAGE_DURATIONFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYGROUP BY CAR_IDHAVING AVERAGE_DURATION >= 7ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;*/SELECT CAR_ID, ROUND(AVG(DURATION), 1) AVERAGE_DURATIONFROM (SELECT CAR_ID, DATEDIFF(END_DATE, START_DATE)+1 DURATION FROM CAR_RENTAL_COMPANY_RENT.. 2025. 6. 14.
[프로그래머스 SQL] Lv. 2 월별 잡은 물고기 수 구하기 ※ 문제 ※ 코드SELECT COUNT(*) FISH_COUNT, MONTH(TIME) MONTHFROM FISH_INFOGROUP BY MONTH(TIME)ORDER BY MONTH(TIME); ※ 풀이MONTH 함수를 통해 GROUPING, ORDER까지 해주면 됩니다. 2025. 6. 14.
[프로그래머스 SQL] Lv. 2 물고기 종류 별 잡은 수 구하기 ※ 문제 ※ 코드select count(*) FISH_COUNT, FISH_NAMEfrom fish_info join fish_name_info using (fish_type)group by fish_nameorder by fish_count desc; ※ 풀이우선 두 테이블을 fish_type을 기준으로 join 시켜 줍니다. 그럼 fish_name만 각 fish_type에 맞게 table이 join 됩니다.그리고 간단하게 fish_name으로 grouping을 시켜주면 끝입니다. 2025. 6. 13.
[프로그래머스 SQL] Lv. 2 루시와 엘라 찾기 ※ 문제 ※ 코드select animal_id, name, sex_upon_intakefrom animal_inswhere name in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')order by animal_id; ※ 풀이간단한 문제입니다. where 구문만 어떻게 짤지 생각하면 되는데 저 같은 경우엔 in 연산자를 통해 구현해주었습니다. 2025. 6. 13.
반응형