mysql에서 mau 구하는 쿼리 질문드립니다. 0 4 2,532

by Kun [SQL Query] mysql mau dau [2022.12.12 15:59:46]


안녕하세요. mau를 구하면서 모바일 여부까지 같이 저장을 해서 출력을 하려고 합니다.

 

SELECT date_format(createdAt, '%Y-%m') AS month
		, count(distinct userId)
		, COUNT(DISTINCT CASE WHEN isMobile=1 THEN userId ELSE NULL END)   AS mauMobile
		, COUNT(DISTINCT CASE WHEN isMobile=0 THEN userId ELSE NULL END) AS mauNonMobile
	FROM login_history loginHistory 
	GROUP BY date_format(createdAt, '%Y-%m')

 

위 쿼리에서 구하고자 하는 것은 전체 mau와 각 날짜 별 모바일, 비모바일 mau를 출력을 하고 싶습니다.

그런데 해당 count문에서 group by문이 먹히지 않은 상태로 출력이 됩니다. over(partition by isMobile)을 해봐도 

Error Code: 1235. This version of MySQL doesn't yet support '(DISTINCT ..)'

라는 오류가 뜨며 적용이 되지 않는데 더이상 진행이 되지 않아 문의를 남깁니다..ㅠㅠ

 

(createdAt, userId, isMobile)

2022-12-12 15:02:11.305895    1516    0
2022-12-12 15:01:11.998891    1516    0
2022-12-12 14:48:19.834645    644    0
2022-12-11 14:48:19.834645    644    1
2022-11-12 15:02:11.305895    1516    1

 

 

 

결과값

2022-11    1    1    0
2022-12    2    1    2

 

 

by 마농 [2022.12.12 16:04:59]

잘 되야 할텐데요?
"group by문이 먹히지 않은 상태로 출력" 이 어떤 말인지 와닿질 않네요.
일단, 쌍따옴표는 홑따옴표로 바꿔보세요.


by Kun [2022.12.12 16:09:35]

쌍따옴표와 홑따옴표를 모두 변경하였습니다!

 

현재 테스트 데이터와 결과값을 출력하였습니다.

mau값과 mauMobile, mauNonMobile값이 일치를 하지 않습니다.


by 마농 [2022.12.12 16:14:14]

결과가 맞게 나온 건데요?
1 + 2 = 3 이 나와야 한다고 생각하는 건가요?
id 는 2개밖에 없으니 2가 나온 거죠.
하나의 id 가 양쪽에 속한 것입니다.
각각 카운트 되지만 합계에서는 한번만 카운트


by Kun [2022.12.12 16:15:55]

아 죄송합니다. 제가 12-11의 데이터를 제대로 확인하지 못했네요 ㅠ.ㅠ..

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입