240922 TIL - 숙제를 뚝딱뚝딱

LIHA·2024년 9월 22일
0

내일배움캠프

목록 보기
56/108
post-thumbnail
post-custom-banner

챌린지반

Q1 - 카테고리 별 상품 갯수 구하기

  1. 일단 상품 카테고리 코드(앞 2자리) 를 구하는 방법부터 알고 싶다
    참고
    -> LPAD, RPAD 라는 명령어가 있었다.
    LPAD(product_code, 2, '') as CATEGORY 라고 입력하니 앞 두글자가 따졌다.

  2. GROUP BY를 걸어야 할것 같긴 한데 뭘로 걸어야 할까?
    -> PRODUCT_CODE, PRODUCT_ID로 해봤다가 아무래도 저 2자리로 정리된 코드로 정렬해야 할거 같아서 해보았다. 이게 맞는거 같았다.

  3. 상품별 개수를 출력... 하고 싶은데 어디다 COUNT를 걸어야 하지?
    -> PRODUCT_CODE는 아니었다. PRODUCT_ID에 거니 맞았다

  • 정답코드는 아래
select LPAD(product_code, 2, '') as CATEGORY, count(product_id) as PRODUCTS
from product
group by CATEGORY
order by product_code ASC

Q2 - 고양이와 개는 몇 마리 있을까

  1. 일단 ANIMAL_TYPE 컬럼을 COUNT 걸어야 하는 건 알겠는데 카테고리 별로 걸고 싶다
    -> GROUP BY도 ANIMAL_TYPE으로 걸어주니 원하는 값이 나왔다.

  2. 예시에 ANIMAL_TYPE, count 컬럼이 나와있네
    -> ANIMAL_TYPE, count(ANIMAL_TYPE)을 해주었다

  3. 고양이를 개보다 먼저 조회해달라고 하네?
    -> ORDER BY ANIMAL_TYPE ASC를 걸어주었다

  • 정답 코드는 아래
SELECT ANIMAL_TYPE, count(ANIMAL_TYPE) AS 'COUNT'
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE ASC

Q3 - 입양 시각 구하기(1)

  1. 시간대별 - date_format(컬럼명, '원하는 형식') 을 쓰자
    -> SELECT date_format(DATETIME, '%H') AS 'HOUR', COUNT(ANIMAL_ID) AS 'COUNT' 를 써주었다.

  2. 시간대 순으로 정렬
    -> GROUP BY, ORDER BY에 모두 HOUR를 걸었다.

  3. 시간대가 주어졌으니 한정하자 - WHERE 절을 걸자
    -> where date_format(DATETIME, '%h') between 9 AND 19 라고 썼는데 12시까지밖에 나오지 않았다.
    -> SQL에서 24시간 표기법으로 나타내려면 %H 라고 써줬어야 했다.
    -> WHERE 절에는 alias로 표기된 이름을 걸 수 없다 - HOUR를 걸었더니 나오지 않아 HOUR의 원본을 걸었다.
    240807 TIL 에 내가 date_format을 썼던 기록이 있다.

  • 정답 코드는 아래
SELECT date_format(DATETIME, '%H') AS 'HOUR', COUNT(ANIMAL_ID) AS 'COUNT'
from ANIMAL_OUTS
where date_format(DATETIME, '%H') between 9 AND 19 
GROUP BY HOUR
ORDER BY HOUR ASC

Q4 - 진료과별 총 예약 횟수 출력하기

  1. 컬럼 명을 지정해줬으니 그대로 바꿔주자
    -> SELECT MCDP_CD AS '진료과코드', COUNT(date_format(APNT_YMD, '%Y-%m')) AS '5월예약건수' 를 써주었다.

  2. 날짜 형식을 맞추자 - 의외로 년도까진 지정해주지 않아도 되었네? (데이터가 모두 2022년 것)
    -> COUNT(date_format(APNT_YMD, '%Y-%m')) AS '5월예약건수' 로 2022-00 로 나오게 설정했다.

  3. 2022년 5월 데이터만 잡도록 WHERE절을 걸어주자
    -> WHERE date_format(APNT_YMD, '%Y-%m') = '2022-05'
    -> 이것 WHERE date_format(APNT_YMD, '%m') = '05' 여도 상관없었다.

  4. alias를 ORDER BY 같은 곳에 걸어도 먹히지 않았다? - 먹힌다!

-> 이렇게 나와서 안 된다고 생각했는데, 이건 내가 ORDER BY의 순서를 잘못 걸어줘서 그런 것이었다.

-> 이렇게 써도 된다!

저 alias는 참고 블로그를 보고 되나 싶어서 따라해봤다.
참고블로그에도 정답이 있는데, 나는 이것과 꽤 다르게 썼지만 어찌됐건 통과가 되었다.

  • 정답 코드는 아래
SELECT MCDP_CD AS '진료과코드', COUNT(date_format(APNT_YMD, '%Y-%m')) AS '5월예약건수'
FROM APPOINTMENT
WHERE date_format(APNT_YMD, '%Y-%m') = '2022-05'
GROUP BY MCDP_CD
ORDER BY COUNT(date_format(APNT_YMD, '%Y-%m')), MCDP_CD ASC
profile
갑자기 왜 춤춰?
post-custom-banner

0개의 댓글