안녕하세요


기간은 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 SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 21982
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12251
8720 사용자의 쿼리 추적하기 [2] Larry 2015.05.14 3054
8719 sp_executesql에서 ROW_NUMBER() ORDER BY절 설정이 안먹습니다. 돌브레인 2015.05.14 2791
8718 쿼리 운용시 발생하는 메세지들입니다. 어떤문제인지 확인부탁드립니다. [3] 지니79 2015.05.13 3063
8717 Count 쿼리문의 [2] 장성원_305526 2015.05.13 2380
8716 DDLTrigger에서 프로시저 내용이 짤리게 됩니다~ [2] 더따뜻한 2015.05.13 2447
8715 단가와 이전단가를 같이 가져오려면 [3] 냥냥 2015.05.12 2537
8714 디스크 보고서에 자동증가/축소 이벤트 항목이 뜨지 않아요.. [2] 졸리앙쥬 2015.05.12 2780
8713 로그인 계정 별 권한 스크립트 [3] 양아치베이비 2015.05.12 2838
8712 도움이필요합니다.] oci_define_by_name 질문입니다. [4] 니징구 2015.05.11 4199
8711 Update문 한번으로 모든 레코드의 값을 바꾸고 싶습니다. [2] 컴맹 2015.05.11 2706
» 로그인 접속 기간 쿼리 문의입니다. [1] 짬자면굿 2015.05.09 2942
8709 페이징될 실제 페이지 번호 미리 알기 [1] DDM 2015.05.08 3461
8708 update 문의 [1] 준후택 2015.05.08 2380
8707 DB 유효 공간 이유진_301818 2015.05.07 2455
8706 날짜계산 ! :) [5] 마힐링 2015.05.07 3202
8705 데이터가 많을 경우 적을경우와 비교해서 인덱스 삭제시 시간이 많이 걸리나요? [1] 로쏘네리 2015.05.07 2296
8704 sp_send_dbmail db메일전송 권한관련 질문 [1] 풀내기vber 2015.05.07 4559
8703 스키마 삭제 [1] hhhh 2015.05.07 2451
8702 유지관리 계획작업시 네트워크 드라이브 백업 문의 [4] jump76821 2015.05.07 3590
8701 space에 간혹 ? 가 들어 갑니다. 닉네임중복 2015.05.06 2161





XE Login