이 상황에서 그룹바이가 가능할까요? 0 3 1,265

by 문선린 [SQL Query] [2014.09.18 17:23:21]


  col1 col2
1 A 2014-09-02
2 A 2014-09-02
3 A 2014-09-03

4

B 2014-09-04
5 B 2014-09-05
6 A 2014-09-06
7 B 2014-09-07
8 B 2014-09-08
9 C 2014-09-10

데이터가 이렇게 있습니다..

group by col1 로 그룹바이를 해야 하는데.

1번줄~3번줄에 있는 자료와 6번줄에 있는 자료가 따로 그룹바이가 되어야 합니다.

차이를 알수 있는 값은 col2의 날짜값밖에 없구요..

날짜값으로 소팅했을때 위 리스트가 나옵니다..

이경우 1번주~3번줄의 데이터와 6번줄의 데이터를 따로 그룹바이 할 수 있는 방법이 없을까요?

제머리로는 생각이 안나서 여쭤봅니다.

한 수 가르침 부탁드립니다.

안되는거라면 안되는 거란 답이라도 듣고 싶네요..

by DarkBee [2014.09.18 17:33:52]
정형화된 Sql 질문이라 퀴즈로 답변을 대신합니다.

http://www.gurubee.net/article/45713

 


by DarkBee [2014.09.18 17:47:40]
죄송합니다. 문제를 1 , 3 , 6, 9 ( 띄엄띄엄 ) 로 봤네요

-- A와 B가 같은 날짜에 있는 것은 없다는걸로 판단하고 작성됐습니다.

WITH t ( col1, col2 ) AS
( 
    SELECT 'A', '2014-09-02' FROM DUAL UNION ALL
    SELECT 'A', '2014-09-02' FROM DUAL UNION ALL
    SELECT 'A', '2014-09-03' FROM DUAL UNION ALL
    SELECT 'B', '2014-09-04' FROM DUAL UNION ALL
    SELECT 'B', '2014-09-05' FROM DUAL UNION ALL
    SELECT 'A', '2014-09-06' FROM DUAL UNION ALL
    SELECT 'B', '2014-09-07' FROM DUAL UNION ALL
    SELECT 'B', '2014-09-08' FROM DUAL UNION ALL
    SELECT 'C', '2014-09-10' FROM DUAL
)
SELECT col1
     , col2
     , SUM ( grp ) OVER ( ORDER BY col2 ) sum_
  FROM (
          SELECT col1
               , col2
               , DECODE ( LAG ( col1 ) OVER ( ORDER BY col2 ), col1, 0, 1 ) grp
            FROM t
)

 


by 문선린 [2014.09.18 17:54:06]

고맙습니다.

정말 존경스럽네요.. 감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입