안녕하세요


기간은 2014-01-01 부터 2014-12-31 까지 로그인 한 기록을 추출 하는 내용인데요.

연속 3개월 접속 id 를 뽑는겁니다. mssql 이구요

USER_LOGIN 테이블에 user_inID (로그인 한 ID), user_indate(로그인 한 날짜) 등등 로그인시 가져올수있는 기록들은 다 기록됩니다.

쿼리--------------------------------------------------------------

select count(*)
from(
select
 A.user_inID,
 STUFF((
 select DISTINCT ','+
 (case when CONVERT(char(7),UL1.user_indate,120)='2014-01' THEN '1'
       when CONVERT(char(7),UL1.user_indate,120)='2014-02' THEN '2'
       when CONVERT(char(7),UL1.user_indate,120)='2014-03' THEN '3'
       when CONVERT(char(7),UL1.user_indate,120)='2014-04' THEN '4'              
       when CONVERT(char(7),UL1.user_indate,120)='2014-05' THEN '5'              
       when CONVERT(char(7),UL1.user_indate,120)='2014-06' THEN '6'
       when CONVERT(char(7),UL1.user_indate,120)='2014-07' THEN '7'
       when CONVERT(char(7),UL1.user_indate,120)='2014-08' THEN '8'
       when CONVERT(char(7),UL1.user_indate,120)='2014-09' THEN '9'
       when CONVERT(char(7),UL1.user_indate,120)='2014-10' THEN 'a'
       when CONVERT(char(7),UL1.user_indate,120)='2014-11' THEN 'b'    
       when CONVERT(char(7),UL1.user_indate,120)='2014-12' THEN 'c' else '0' END)

       from USER_LOGIN as UL1
       where UL1.user_inID = A.user_inID and CONVERT(char(7),UL1.user_indate,120) BETWEEN '2014-01' and '2014-02'
       group by UL1.user_indate
       FOR XML PATH('')), 1, 1, '') as num

from
(
 SELECT DISTINCT user_inID, count(*) as cnt
 FROM USER_LOGIN
 where CONVERT(char(7),user_indate,120) BETWEEN '2014-01' and '2014-12'
 group by user_inID having count(*) > '2'
) as A
) as re_UL
where re_UL.number like '%2,3,4%'

-----------------------------------------------------------------------------------------


이렇게 짰습니다. 급하다보니깐..

출력은 ID랑 DATE 만 나오게 해서 DATE에 해당 아이디 로그인 시간을  , (콤마)로 연결 해주었습니다.

 group by user_inID having count(*) > '2' 부분은 연속 4개월 접속해도 연속 3개월 접속한거니깐 이렇게 처리 해주었구요.

where re_UL.number like '%2,3,4%'  << 이부분에서 1,2,3 이라던지 2,3,4 라던지 연속 숫자를 넣어줘서 전체 카운팅을 했습니다.


짜고나서 생각해보니 만약 이게 10년 대상을 월별로 추출 하면 엄천난 노가다가 필요 할꺼 같더라구요.

그래서

첫번째 질문은 위 쿼리를 기간을 대량으로 잡았을경우 처리 할수있는 쿼리를 부탁드립니다.


두번재는 위와 조금 관련 된거지만 (위 쿼리를 보시면 날짜를 코드와 했습니다.)

A1    |      A2

--------------------------------------

a       |  123abc

b       |  456abczxc

c       |  123zxc

d       |  123

e       |  123456

이 테이블에서 

A2 의 값을 중심으로 123이 들어 갔있으면 re_A,

                                     456이 들어 가있으면 re_B,

                                     abc 가 들어 가있으면 re_C

로 하여 그룹을 지어서 카운팅 하는 방법 가르켜 주세요.

결과 (re_A는 a, b,d,e로 4개,  re_B는 b,e로 2개, re_C는 a,b로 2개 )

A1    |  A2

----------------------

re_A |  4

re_B |  2

re_C |  2


부탁 드립니다!!

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 461
8729 커서 쿼리 문의 입니다. [2] 카르페디엠 2015.05.21 2553
8728 홈페이지 서버 관련 문의 (DB 관련 문의) [1] 아우렐리오 2015.05.21 4802
8727 중복구간 삭제 쿼리 질문드립니다 [2] saysay218 2015.05.20 3922
8726 mssql lock 에 대해서 궁금한게 있어서요.. [4] 죄민수 2015.05.19 2728
8725 프로시저의 주석이 다 사라졌습니다. 흑흑 2015.05.19 2202
8724 MS-SQL 2012버전에서 임시테이블 관련 문의입니다.. [3] 비와바람 2015.05.19 2549
8723 디비 용량 확보 관련 [1] hhhh 2015.05.18 2413
8722 rollup 질문입니다. [3] 카르페디엠 2015.05.18 2401
8721 MSSQL 2000 to MSSQL 2014 마이그레이션 방법 문의 드립니다. [1] 꼬부랑 2015.05.15 5117
8720 사용자의 쿼리 추적하기 [2] Larry 2015.05.14 3037
8719 sp_executesql에서 ROW_NUMBER() ORDER BY절 설정이 안먹습니다. 돌브레인 2015.05.14 2771
8718 쿼리 운용시 발생하는 메세지들입니다. 어떤문제인지 확인부탁드립니다. [3] 지니79 2015.05.13 3053
8717 Count 쿼리문의 [2] 장성원_305526 2015.05.13 2361
8716 DDLTrigger에서 프로시저 내용이 짤리게 됩니다~ [2] 더따뜻한 2015.05.13 2426
8715 단가와 이전단가를 같이 가져오려면 [3] 냥냥 2015.05.12 2481
8714 디스크 보고서에 자동증가/축소 이벤트 항목이 뜨지 않아요.. [2] 졸리앙쥬 2015.05.12 2735
8713 로그인 계정 별 권한 스크립트 [3] 양아치베이비 2015.05.12 2823
8712 도움이필요합니다.] oci_define_by_name 질문입니다. [4] 니징구 2015.05.11 4174
8711 Update문 한번으로 모든 레코드의 값을 바꾸고 싶습니다. [2] 컴맹 2015.05.11 2663
» 로그인 접속 기간 쿼리 문의입니다. [1] 짬자면굿 2015.05.09 2923





XE Login