ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 12/29
    스파르타/TIL(Today I Learned) 2023. 12. 29. 09:19

    조건에 맞는 사용자 정보 조회하기

    -- 거래 게시물을 3건 이상 등록 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-
    SELECT s.user_id, s.nickname,
        concat(s.city," ",s.street_address1," ",street_address2) "전체주소",
        concat(left(s.tlno,3),"-",substring(s.tlno,4,4),"-",right(s.tlno,4)) "전화번호"
    from used_goods_board b
    inner join used_goods_user s
    on b.writer_id = s.user_id
    where s.user_id in (select WRITER_ID from used_goods_board group by 1 having count(1) >= 3)
    group by 1
    order by 1 desc

    어제 튜터님이 말하신대로 having절을 최소화하기 위해 where절을 자세히 쓰는 연습을 하는 중이다.

    https://school.programmers.co.kr/learn/courses/30/lessons/164670

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     


     

    자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

    CAR_RENTAL_COMPANY_RENTAL_HISTORY
     테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요. 이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.
    SELECT car_id
        case when date(start_date) <= '2022-10-16' and date(end_date) >= '2022-10-16' then "대여중"
            else "대여 가능" end as AVAILABILITY
    from CAR_RENTAL_COMPANY_RENTAL_HISTORY
    group by car_id
    order by car_id desc

    내가 처음에 짠 코드는  위에 코드이다. 

    내 생각으로는 문제의 조건을 다 맞춘기분이 들었다.

    하지만 답이 아니였다. 나는 무엇이 문제인지를 잘 몰라가지고 여러가지 찾아보았다.

     

    -- 코드를 입력하세요
    SELECT car_id,max(start_date),max(end_date),
        max(case when date(start_date) <= '2022-10-16' and date(end_date) >= '2022-10-16' then "대여중"
            else "대여 가능" end) as AVAILABILITY
    from CAR_RENTAL_COMPANY_RENTAL_HISTORY
    group by car_id
    order by car_id desc

    첫번째 내가 짠 코드는 group by에 특징에 의해 오류가 발생할 수 있다.

    group by는 집계함수를 사용하지 않는 컬럼이 있으면 그 컬럼은 group by에 포함이 되어야 한다.

    하지만 내가 짠 코드는 그렇지 않게 짜였다.

    max를 사용한 이유도 그와 같은 이유다. 또한 날짜에 max를 사용해서 가장 최근에 빌리고 반납한 날짜를 비교하여

    답을 구한다.

     

     

     

    '스파르타 > TIL(Today I Learned)' 카테고리의 다른 글

    1/02  (1) 2024.01.02
    12/30 WIL  (1) 2023.12.30
    12/ 28  (1) 2023.12.28
    12/27  (0) 2023.12.27
    12/26  (0) 2023.12.26
Designed by Tistory.