티스토리 뷰

728x90

자주 사용하지 않는 구문에 대해서만 참고용으로 작성하였다.

 

입양 시각 구하기(1)

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

https://programmers.co.kr/learn/courses/30/lessons/59412

SELECT HOUR(DATETIME), COUNT(*)
FROM ANIMAL_OUTS 
WHERE HOUR(DATETIME) BETWEEN '9' AND '20'
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)

* MySQL의 날짜타입에서 시간만 가져오고 싶을 때는 HOUR() 함수를 사용한다.

 

입양 시각 구하기(2)

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

https://programmers.co.kr/learn/courses/30/lessons/59413

SET @hour := -1;
SELECT IFNULL(hour_val2,hour_val1) AS 'HOUR', IFNULL(cnt,0) AS 'CNT'
FROM (
    SELECT @hour := @hour + 1 AS 'hour_val1'
    FROM ANIMAL_OUTS
    WHERE @hour < 23
    ) A
    LEFT OUTER JOIN (
        SELECT HOUR(DATETIME) AS 'hour_val2', COUNT(*) AS 'cnt'
        FROM ANIMAL_OUTS 
        GROUP BY HOUR(DATETIME)
    ) B
    ON A.hour_val1 = B.hour_val2
ORDER BY A.hour_val1

* ANIMAL_OUTS 테이블에는 7~19시까지 입양된 건수가 있는데 만약 입양된 건수가 없는 다른 시간까지 모두 출력하고 싶다면 변수를 사용해서 0~23까지 값이 입력된 테이블을 만든 후 JOIN 해야 한다.

 

 

오랜 기간 보호한 동물(2)

입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.

https://programmers.co.kr/learn/courses/30/lessons/59411

SELECT A.ANIMAL_ID, A.NAME -- , ABS(DATEDIFF(B.DATETIME,A.DATETIME))
FROM ANIMAL_INS A
    JOIN ANIMAL_OUTS B
    ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY ABS(DATEDIFF(B.DATETIME,A.DATETIME)) DESC
LIMIT 2;

* 보호기간이 가장 길었던 동물을 구하는 것이므로 "입양일 - 보호시작일자"의 차이가 큰 2마리의 동물을 찾아야 한다. 날짜 차이를 구하는 함수인 DATEDIFF()함수를 사용하였고 혹시나 앞뒤가 바뀌어 결과가 반대로 될 수 있으므로 ABS()함수를 사용하였다.

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
LIST

'Programming > MySQL' 카테고리의 다른 글

[LeetCode] MySQL 코딩연습  (0) 2021.11.13
[MySQL] MySQL 함수 정리  (0) 2021.11.08
[MySQL] MySQL vs MSSQL 함수 비교  (0) 2021.11.08
[MSSQL/Hackerrank] 15 Days of Learning SQL  (0) 2021.11.07
[MySQL/Hackerrank] Print Prime Numbers  (0) 2021.11.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함