SELECT a.code, a.id, count(distinct(a.user)) this_count
, max(case when a.month = '201309' then a.user else 0 end) last_user
FROM a
WHERE a.month between '201105' and '201309'
GROUP BY a.code, a.id
having count(distinct(a.user)) > 1
특정기간내에 코드와 아이디로 group by 해서 유저의 카운트를 구하는 쿼리인데
max절이 들어가니까 엄청나게 속도가 느려지네요..
마지막달의 유저값을 구하기 위해 넣은 건데 다른 방법 있는지 알려주시면 감사하겠습니다.
그리고, 201105 부터 201308 까지해서 month 값이 null 이 아닌 데이터중에서 가장 최근달의 user값을
구하는 위와 비슷한 sql 이 하나 더 필요합니다.
키는 month, code, id 입니다.
감사합니다.
|