SQL 50

[프로그래머스] 취소되지 않은 진료 예약 조회하기

-- 의사와 진료 테이블의 컬럼을 보고 엮어줄게 없어서 헤매다가 -- 다른 이름의 컬럼으로 같은 값을 확인해 해결 SELECT T3.APNT_NO, T1.PT_NAME, T1.PT_NO, T3.MCDP_CD, T2.DR_NAME, T3.APNT_YMD FROM PATIENT T1, DOCTOR T2, APPOINTMENT T3 WHERE T1.PT_NO = T3.PT_NO AND T2.DR_ID = T3.MDDR_ID AND T3.APNT_CNCL_YN = 'N' AND T3.MCDP_CD = 'CS' AND T3.APNT_YMD LIKE '2022-04-13%' ORDER BY T3.APNT_YMD

SQL 2023.07.15

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

-- 뭔가 생각이 많은 문제여따.. -- 우선 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