SQL 2012 서버를 사용하고 있습니다.
테이블에 userID(key), value 필드가 있는데요,
useriD valuse
1 A
1 B
1 B
2 B
3 A
3 C
이렇게 값이 들어가 있을때 각 userID당 최초값은 무시하고 다음 값부터 카운트 하고 싶습니다.
결과:
A = 0
B = 2
C = 1
가능할까요?
도움 부탁드려요~
Comment 4
-
나는짱이야
2014.06.26 11:59
-
마다라
2014.06.26 12:07
네 맞습니다. ㅠㅠ
값들의 함계입니다. 값들도 유형이 있어요 A,B,C,D
-
초짜해커
2014.06.26 12:55
ROW_NUMBER 함수를 한번 적용해서 ROW_NUMBER가 1인것을 뺀다음 집계 하면 될거 같네요.
DECLARE @A TABLE (UserID INT, Value VARCHAR(1))
INSERT @A SELECT 1, 'A'
INSERT @A SELECT 1, 'B'
INSERT @A SELECT 1, 'B'
INSERT @A SELECT 2, 'B'
INSERT @A SELECT 3, 'A'
INSERT @A SELECT 3, 'C'
SELECT Value, Count = Count(1)
FROM (
SELECT A.UserID, A.Value
FROM (SELECT 순번 = ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY Value), UserID, Value FROM @A) A
WHERE 순번 > 1) A
GROUP BY Value
결과중에 A = 0은 안나오는데..
이건 VALUE에 대한 마스터 테이블이 있으면 그것과 OUTER JOIN을 하던지
없으면 DISTINCT 해서 SELECT 한것과 OUTER JOIN을 하던지 하면 될거 같습니다.
-
마다라
2014.06.26 13:25
감사합니다~ 한번 해볼께요!
잘 이해가 안되는 서 그러는데 말씀하신 의미가 예를 들어서 userID가 1인 데이터를 count하고자 할때 처음나온 1을 제외하고 그 합계를 구한다는 말씀이신거죠?