갑자기 요일별이나 월별 제일 많이 사용한게 뭐에요?
라고 물어보시면 당차게 알았다고 말씀드리고 뒤돌아 이런표정을 짓곤 합니다.
항상 말하지만 기본이 중요하다고 생각하기때문에 이런표정 안나오게 잘해보자고요 🌚
잘보면 이모티콘 같고 귀엽네요
제가 연도와 월별로 사용량을 보기위해서 많이 사용하는 함수입니다.
이론적으로 설명 하자면 날짜나 숫자 데이터를 지정된 형식의 문자열로 변환하는 함수입니다.
TO_CHAR(value,format)
기본적인 형식은 이렇게 되어있습니다.
그러면 앞에서 알려드린 TO_CHAR()함수를 이용해서 년도의 월별 사용량을 알아볼까요??
💡 그렇다면 제일먼저 format을 정해주여야 합니다.
년도의 월별을 할것이기 때문에 format의 형식은 YYYY-MM으로 해야하겠습니다.
그 다음 지정한 format을 기준으로 그룹을 잡은후 중복을 제거한 userid의 개수를 알아야합니다.
SELECT TO_CHAR(ts, 'YYYY-MM') as mon, COUNT(DISTINCT userid) as USERCOUNT
FROM session_data
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10;
이렇게 쿼리를 하게 된다면 월별 사용자가 가장많은 달을 찾을수 있습니다.
사용자가 가장 많은 달은 위의 쿼리처럼 하면 알수 있었습니다.
그렇다면 사용자가 가장 많은 시간이나 요일은 어떻게 알수 있을까요??
그럴때 저는 EXTRACT()함수를 많이 사용하곤 합니다.
EXRTACT([사용할 형식] FROM [컬럼명])
형식은 이렇게 되어있습니다.
설명을 하자면 [사용할 형식]에 원하는 것, HOUR나 DOW처럼 조건을 적어주고 대상이되는 [컬럼명]을 적어주면 완성이 됩니다.
위의 형식들을 사용해서 원하는 것들을 찾을수 있을거 같습니다.
그렇다면 간단한 예제로 사용량이 가장 많은 시간을 알아볼까요??
SELECT EXTRACT(HOUR FROM ts), COUNT(1)
FROM session_data
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10;
이렇게 하게 된다면 사용량이 가장많은 시간을 알수 있습니다.
알고나면 굉장히 쉽고 금방하는거지 말입니다.
이런걸 보면 아는게 힘이고 노하우라고 생각합니다.
별것 아니라고 생각하지말고 쉬워보이는것도 다시보고 익숙해져야 하는 저를 보았습니다... 🙉