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 39767 게시물 읽기
No. 39767
연속된 데이터 카운팅하여 보여주기
작성자
승현아빠
작성일
2012-11-22 17:59
조회수
7,558

현재 TABLE 구조가 다음과 같이 되어있습니다.

Name,       date,                  price
홍길동, 20121122083105, 15000
홍길동, 20121122083115, 10000
고길동, 20121122083211, 12000
홍길동, 20121122084550, 11000
고길동, 20121122091103, 19000
고길동, 20121122103918, 21000

시간 역순으로 해서 연속된 카운트를 하려고 합니다.
즉 아래와 같이 나오게 하려고 합니다.

Name, count
고길동,   2
홍길동,   1
고길동,   1
홍길동,   2

어떻게 쿼리를 짜야 할지 정말 모르겠습니다.
도와 주십시요
감사합니다.

 

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

얼마 전에 비슷하게 작성한 쿼리가 있어서 참고해서 작성했습니다. 
참고만 하시구요.. ㅋㅋ
더 효율적인 쿼리는 다음분이 올려주실 거에요.. ^^;;  

  

WITH TMP AS (

        SELECT '홍길동' NAME, '20121122083105' DATE, '15000' PRICE FROM DUAL 

    UNION ALL SELECT '홍길동' NAME, '20121122083115' DATE, '10000' PRICE FROM DUAL 

    UNION ALL SELECT '고길동' NAME, '20121122083211' DATE, '12000' PRICE FROM DUAL 

    UNION ALL SELECT '홍길동' NAME, '20121122084550' DATE, '11000' PRICE FROM DUAL 

    UNION ALL SELECT '고길동' NAME, '20121122091103' DATE, '19000' PRICE FROM DUAL 

    UNION ALL SELECT '고길동' NAME, '20121122103918' DATE, '21000' PRICE FROM DUAL 

)

SELECT 

    NAME, 

    RN - NVL(LAG(RN) OVER(ORDER BY DATE DESC), 0) CNT

FROM (

    SELECT  

        NAME, DATE, PRICE, 

        DECODE(

            LEAD(NAME) OVER(ORDER BY DATE DESC), 

            NAME, 0, 

            ROW_NUMBER() OVER(ORDER BY DATE DESC)

        ) RN

    FROM TMP 

    ORDER BY DATE DESC 

)

WHERE RN > 0 

 

 

 

전영식(garam111)님이 2012-11-23 01:49에 작성한 댓글입니다.
이 댓글은 2012-11-23 05:38에 마지막으로 수정되었습니다.

SELECT name
     , COUNT(*) cnt
--     , MIN(dt) dt_from
--     , MAX(dt) dt_to
--     , SUM(price) price
  FROM (SELECT name, dt, price
             , ROW_NUMBER() OVER(ORDER BY dt DESC) rn1
             , ROW_NUMBER() OVER(PARTITION BY name ORDER BY dt DESC) rn2
          FROM t
        )
 GROUP BY name, rn1-rn2
 ORDER BY MAX(dt) DESC
;

마농(manon94)님이 2012-11-23 08:26에 작성한 댓글입니다.

많은 도움이 되었습니다.  감사합니다

승현아빠님이 2012-11-29 01:28에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
39813테이블 생성시 복합 pk 같이 생성
나그네
2012-11-26
6273
39769조회 쿼리 에 대해서 질문합니다(내용수정) [1]
서홍민
2012-11-23
6323
39768parall 도움 요청 [2]
leesungoh
2012-11-23
6589
39767연속된 데이터 카운팅하여 보여주기 [3]
승현아빠
2012-11-22
7558
39766DB 다른 계정의 테이블을 조회하고싶습니다. [2]
새하정
2012-11-22
8130
39762최근 일자 관련 쿼리 질문 [2]
PCI
2012-11-21
6137
39749마농님 급하게 질문이 있어요
조기영
2012-11-20
5847
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다