SQL 48

[프로그래머스] 자동차 평균 대여 기간 구하기

-- 뭔가 생각이 많은 문제여따.. -- 우선 DATEDIFF를 하고 2개의 인자만 사용하게 되면 기본적으로 DAY를 비교하는 것. -- 이후 DATEDIFF를 하고 +1을 해주는 이유는 15일과 10을 빼면 5가 나오는데 -- 실제로 10일부터 15일까지 사용했다라고 가정하면 -- 10, 11, 12, 13, 14, 15로 총 6일을 사용하는 것이기에 +1을 더 해주고 AVG()사용 SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AS AVERAGE_DURATION FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP BY CAR_ID HAVING AVERAGE_DURATION >= 7 ORDER BY 2 DES..

SQL 2023.07.14

[프로그래머스] 대여 기록이 존재하는 자동차 리스트 구하기

-- 방법 1 -- 카티션과 WHERE SELECT DISTINCT T1.CAR_ID FROM CAR_RENTAL_COMPANY_CAR T1, CAR_RENTAL_COMPANY_RENTAL_HISTORY T2 WHERE T1.CAR_ID = T2.CAR_ID AND T1.CAR_TYPE = '세단' AND T2.START_DATE LIKE '%-10-%' ORDER BY T1.CAR_ID DESC -- 방법2 -- JOIN과 ON을 사용 SELECT DISTINCT T1.CAR_ID FROM CAR_RENTAL_COMPANY_CAR T1 JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY T2 ON T1.CAR_ID = T2.CAR_ID WHERE T1.CAR_TYPE = '세단' AN..

SQL 2023.07.14

[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기

-- 성공 코드 -- HAVING 절을 사용하지 않고 WHERE문과 SUBQUERY를 사용해서 푼 방식 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO WHERE (FOOD_TYPE, FAVORITES) IN (SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE ) ORDER BY FOOD_TYPE DESC -- 실패 코드 -- 아래의 코드가 실패한 이유는 아직도 정확하게는 모르겠지만 -- 현재 GROUP BY 된 상태에서 HAVING 절을 사용하게 되어도 -- 가장 상위에 있는 하나만 조회가 되어서 원하는 대로 조건을 추가하지 못한다고 한다. SELECT FOOD_TYPE..

SQL 2023.07.13

[프로그래머스] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

-- 성공 코드 SELECT CAR_TYPE, COUNT(*) AS CARS FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%통풍%' OR OPTIONS LIKE '%열선%' OR OPTIONS LIKE '%가죽%' GROUP BY CAR_TYPE ORDER BY CAR_TYPE -- 실패 코드 -- 실패를 한 이유는 IN 이 문제가 되는데 -- 나는 OPTIONS 안에 ('통풍시트', '열선시트', '가죽시트') -- 하나라도 있으면 되는건줄 알았는데 -- 그게 아니라 해당 값과 동일한게 있는지 찾는것이어서 문제가 되고 -- 아래 HAVING에 사용한 OPTIONS는 SELECT 절에 없어서 에러가 나기도 한다. SELECT CAR_TYPE, COUNT(*) AS..

SQL 2023.07.13

[프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기

-- 흠 우선 아직 확실하게 이해했다기보단 대략적으로 이해했다고 보면 될 듯하다 -- MAX()메서드는 GROUP BY를 커버하지 못한다고 한다. -- 그래서 운 좋게 맞아 떨어질지 몰라도 원하는 대로 조회가 되지 않을 수 있기에 -- 아래와 같이 WHERE절에 CATEGORY을 그룹으로 해서 해당 값에 포함되면 -- 조회하는 거로 하는데 -- 조금 더 생각해보니까 한번의 과정이 더 필요했던게 아닐까 싶다 SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT WHERE PRICE IN (SELECT MAX(PRICE) FROM FOOD_PRODUCT GROUP BY CATEGORY) GROUP BY CATEGORY HAVING CATEG..

SQL 2023.07.12

[프로그래머스] 성분으로 구분한 아이스크림 총 주문량

-- 카티션 프로덕트로 연결한 테이블에 WHERE 문을 사용한 쿼리문 SELECT T2.INGREDIENT_TYPE, SUM(T1.TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF T1, ICECREAM_INFO T2 WHERE T1.FLAVOR = T2.FLAVOR GROUP BY T2.INGREDIENT_TYPE ORDER BY SUM(T1.TOTAL_ORDER) -- JOIN 문과 ON을 사용한 쿼리문 SELECT T2.INGREDIENT_TYPE, SUM(T1.TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF T1 JOIN ICECREAM_INFO T2 ON T1.FLAVOR = T2.FLAVOR GROUP BY T2.INGREDIENT_T..

SQL 2023.07.12

[프로그래머스] 저자 별 카테고리 별 매출액 집계하기

-- 단순히 하나씩 테이블간 연관 관계를 찾고 이후 -- GROUP BY 할 컬럼을 SELECT 절에 작성한 컬럼들로 구성 후 정렬 후 조회 SELECT T1.AUTHOR_ID, T2.AUTHOR_NAME, T1.CATEGORY, SUM(T1.PRICE*T3.SALES) AS TOTAL_SALES FROM BOOK T1, AUTHOR T2, BOOK_SALES T3 WHERE T1.AUTHOR_ID = T2.AUTHOR_ID AND T1.BOOK_ID = T3.BOOK_ID AND T3.SALES_DATE LIKE '2022-01%' GROUP BY T1.AUTHOR_ID, T1.CATEGORY ORDER BY T2.AUTHOR_ID, T1.CATEGORY DESC

SQL 2023.07.12