안녕하세요. 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
잘 되야 할텐데요?
"group by문이 먹히지 않은 상태로 출력" 이 어떤 말인지 와닿질 않네요.
일단, 쌍따옴표는 홑따옴표로 바꿔보세요.
결과가 맞게 나온 건데요?
1 + 2 = 3 이 나와야 한다고 생각하는 건가요?
id 는 2개밖에 없으니 2가 나온 거죠.
하나의 id 가 양쪽에 속한 것입니다.
각각 카운트 되지만 합계에서는 한번만 카운트
아 죄송합니다. 제가 12-11의 데이터를 제대로 확인하지 못했네요 ㅠ.ㅠ..
쌍따옴표와 홑따옴표를 모두 변경하였습니다!
현재 테스트 데이터와 결과값을 출력하였습니다.
mau값과 mauMobile, mauNonMobile값이 일치를 하지 않습니다.