database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41009 게시물 읽기
No. 41009
번호 질문..
작성자
김하늘(gamjabcd)
작성일
2015-11-23 00:04
조회수
8,169

 

a cnt
1 1
1 2
1 3
0 1
0 2
0 3
1 1
1 2
1 3

field a가 있습니다.

cnt field를 구하고 싶습니다.

row_number() OVER (partition by ... 을 생각해 봤지만 a의 종류가 2개밖에 안되서 원하는 결과가 안나오더군요..

 

이 글에 대한 댓글이 총 3건 있습니다.

WITH t AS
(
SELECT 1 seq, 1 a FROM dual
UNION ALL SELECT 2, 1 FROM dual
UNION ALL SELECT 3, 1 FROM dual
UNION ALL SELECT 4, 0 FROM dual
UNION ALL SELECT 5, 0 FROM dual
UNION ALL SELECT 6, 0 FROM dual
UNION ALL SELECT 7, 1 FROM dual
UNION ALL SELECT 8, 1 FROM dual
UNION ALL SELECT 9, 1 FROM dual
)
-- 정렬기준이 없어서 Seq 항목 추가했습니다.
SELECT seq, a
     , ROW_NUMBER() OVER(PARTITION BY grp, a ORDER BY seq) cnt
  FROM (SELECT seq, a
             , ROW_NUMBER() OVER(ORDER BY seq)
             - ROW_NUMBER() OVER(PARTITION BY a ORDER BY seq) grp
          FROM t
        )
 ORDER BY seq
;

마농(manon94)님이 2015-11-23 09:19에 작성한 댓글입니다.
이 댓글은 2015-11-23 09:20에 마지막으로 수정되었습니다.

 감사합니다 제가 원하던 것이네요...

근데  잘 이해가 안가네요 ㅠㅠ 좀더 공부를 해봐야 겠습니다

김하늘(gamjabcd)님이 2015-11-23 16:14에 작성한 댓글입니다.

문제는 중복되어 있는 값에 대해서, 어떻게 그룹핑 할 수 있는 규칙이 있느냐 입니다.

현재는 1의 값만   2개로 분할 된다고  작성해 봤네요..

WITH T AS
(
SELECT  1 A FROM DUAL UNION ALL
SELECT  1 FROM DUAL UNION ALL
SELECT  1 FROM DUAL UNION ALL
SELECT  0 FROM DUAL UNION ALL
SELECT  0 FROM DUAL UNION ALL
SELECT  0 FROM DUAL UNION ALL
SELECT  1 FROM DUAL UNION ALL
SELECT  1 FROM DUAL UNION ALL
SELECT  1 FROM DUAL
)
SELECT  A
       ,ROW_NUMBER() OVER (PARTITION BY (CASE WHEN A = 1  AND MOD(ROWNUM,2) = 1 THEN 1+ MOD(A,2)/10
                                              ELSE A
                 END ) ORDER BY A) AS CNT
FROM  (SELECT A
    FROM T
       ORDER BY A
       ) C;

 

Bill(baezzang)님이 2015-11-24 10:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41013global index 를 조회하는 방법이 있을까요? [4]
지나가는
2015-11-25
8970
41011오라클에서 다른 owner의 트리거 소스 볼 수 있는 권한 부여 방법 [1]
김광표
2015-11-24
8496
41010구간 시작 끝 묶음 및 일련번호 부여 문의 드립니다. [2]
김미림
2015-11-23
8292
41009번호 질문.. [3]
김하늘
2015-11-23
8169
41008쿼리 속도 질문좀 드릴게요... (도와주십시오 ㅜㅜ) [4]
검콤이
2015-11-20
8588
41006쿼리좀 도와주세여.. 부탁드립니다. [2]
초보
2015-11-19
8304
41005데이터 한줄 내려서 정렬하기 [3]
민식이
2015-11-16
8598
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다