공부/SQL(33)
-
[SQL] Programmers - 자동차 대여 기록별 대여 금액 구하기
Problem Solution 출력해야 하는것 HISTORY_ID (대여기록ID), 대여기록별 대여금액 (DAILY_FEE * 대여기간 * DISCOUNT)AS FEE 고려해야 하는것 CAR_TYPE이 '트럭' 대여기간에 따른 할인비율이 다름. 이것에 관련된 쿼리문을 작성해야함. SELECT 절에 CASE구문을 사용? DURATION_TYPE이라는 컬럼을 사용해서 타입별 할인폭을 선택 이건 문자열에 '7일 이상' 또는 '30일 이상' 이 있는 지 확인해서 맞다면 해당 할인율을 적용하면 될것같음. 할인율 적용 이전의 금액 계산 더보기 DATEDIFF(END_DATE, START_DATE) * DAILY_FEE 할인 적용 이후의 금액 계산 더보기 DATEDIFF(END_DATE, START_DATE) * (..
2023.04.11 -
[MySQL] DATE_FORMAT
https://heytech.tistory.com/50
2023.04.10 -
[SQL] Programmers - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 <CASE, GROUP BY, SUBQUERY>
Problem Solution CASE문을 사용하면 쉽게 해결이 가능 할 줄 알았다. SELECT CAR_ID, # DATE_FORMAT(END_DATE, '%Y-%m-%d'), CASE WHEN DATE_FORMAT(END_DATE, '%Y-%m-%d') < '2022-10-16' THEN '대여 가능' ELSE '대여중' END AVAILABILITY FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP BY CAR_ID ORDER BY CAR_ID DESC; 하지만 이 쿼리문에서 문제는 CASE 문의 조건에 있는데, 같은 CAR_ID라도, 여러번 대여가 가능한데 AVAILABLILITY는 그걸 반영하지 못함. 예시를 들자면, 2022-09-30 에 김옥냥이라는 친구가 CA..
2023.04.10 -
[SQL] Programmers - 서울에 위치한 식당목록 출력하기 <GROUP BY, INNER JOIN, WHERE>
Problem Solution 같은 데이터셋을 사용하는 문제를 풀었는데 출력하는 데이터가 비슷하다. SELECT i.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(r.REVIEW_SCORE), 2) AS SCORE FROM REST_INFO i INNER JOIN REST_REVIEW r ON i.REST_ID = r.REST_ID WHERE ADDRESS LIKE '서울%' GROUP BY REST_ID ORDER BY SCORE DESC, FAVORITES DESC; 특별히 어려운점은 없었는데, 문제를 풀면서 문제가 조금 잘못된 점을 발견했다. REVIEW가 없는 서울 소재의 식당들도 포함되어야 하는게 아닌가? 현재의 쿼리문은 더보기 IN..
2023.04.10 -
[SQL] Programmers - 중성화 여부 파악하기
Problem Solution SELECT ANIMAL_ID, NAME, # IF(SEX_UPON_INTAKE REGEXP 'Neutered|Spayed', 'O', 'X') 중성화 ( CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O' ELSE 'X' END ) AS 중성화 FROM ANIMAL_INS ORDER BY ANIMAL_ID
2023.04.09 -
[SQL] Programmers - 루시와 엘라 찾기 <REGEXP>
다시 등장한 REGEXP 활용 가능한 문제 Problem SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') Solution 이렇게 간단하게 해결 가능해서 굳이 REGEXP를 사용하지 않아도 되지만. 굳이 사용해본다면.. 요것들을 사용하면 쉽게 해결이 가능할 것이다. SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME REGEXP '^(Lucy|Ella|Pickle|Rogan|Sabrina|Mitty)$'
2023.04.09