이것도 group by 가 가능할까요?? 1

by 스나이퍼 [2013.12.14 11:29:19]


테이블에 아래 자료가 있습니다.

날짜:사용자:최초점수:최종점수:점수차이
-------------------------------------------------------------------------------
20131201   A:홍길동,B:김길동   100   150   50
20131201   A:홍길동     200   400  200
20131201   B:김길동,C:아무개   100   150 50
20131201   B:김길동,D:강해요   100   150 50
------------------------------------------------------------------------------

사용자 필드값을 가져올때는 split 으로 가져와서 사용합니다.

여기서 질문드립니다.
위와 같은 자료가 있을때
사용자 개개인별로 점수차이 합을 가져오고 싶습니다.
 ㅠㅠ
이런 문장도 group by 로 가능한지요?

by 마농 [2013.12.16 10:04:35]
WITH t AS
(
SELECT '20131201' dt, 'A:홍길동,B:김길동' usr, 100 v1, 150 v2, 50 v3 FROM dual
UNION ALL SELECT '20131201', 'A:홍길동'         , 200, 400, 200 FROM dual
UNION ALL SELECT '20131201', 'B:김길동,C:아무개', 100, 150,  50 FROM dual
UNION ALL SELECT '20131201', 'B:김길동,D:강해요', 100, 150,  50 FROM dual
)
SELECT REGEXP_SUBSTR(usr, '[^,]+', 1, lv) usr
     , SUM(v3) v3
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 9)
 WHERE lv <= REGEXP_COUNT(usr, ',') + 1
 GROUP BY REGEXP_SUBSTR(usr, '[^,]+', 1, lv)
;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입