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
운영게시판
최근게시물
MS-SQL Q&A 6383 게시물 읽기
No. 6383
쿼리 질문입니다.
작성자
정재훈
작성일
2012-06-08 13:36
조회수
7,386

 로그들이 쌓인 히스토리 테이블에서 에러 사항이 발견된 횟수를 구하고 싶습니다.

 
 
 
예를 들자면
 
아래와 같은 상태를 저장해 놓은 이력 테이블이 있습니다.
 
 
 
ID            상태         시간
 
id1         BAD           20:00
 
id1         BAD          19:00
 
id1         BAD          18:00
 
id1         OK            17:00
 
id1         BAD          16:00
 
id2         BAD          20:00
 
id2         OK            19:00
 
id2         BAD          18:00
 
 
 
 
 
제가 원하는 결과는 BAD 상태가 몇번이나 지속 되었는지 입니다.
 
가장 최근 OK 가 나온 이후로 BAD 가 몇번 연속 이어졌는지를 파악해서 아래와 같은 결과를 얻고 싶습니다.
 
 
 
 
ID            BAD 상태 지속 횟수        
 
id1                    3           
 
id2                    1
 
 
어떤 쿼리를 사용하면 BAD상태 지속 횟수를 얻을 수 있을 까요?
 
이 글에 대한 댓글이 총 1건 있습니다.

 WITH testTbl ( id, st, tm )

AS
(
SELECT 1, 'X', 20
UNION ALL SELECT 1, 'X', 19
UNION ALL SELECT 1, 'X', 18
UNION ALL SELECT 1, 'O', 17
UNION ALL SELECT 1, 'X', 16
 
UNION ALL SELECT 2, 'X', 20
UNION ALL SELECT 2, 'O', 19
UNION ALL SELECT 2, 'X', 18
)
SELECT tt1.id, COUNT(*) AS countX
FROM testTbl AS tt1
INNER JOIN ( 
SELECT id, MAX( tm ) AS lastO 
FROM testTbl 
WHERE st = 'O' 
GROUP BY id 
) AS tt2 ON tt1.id = tt2.id AND tt1.tm > tt2.lastO
GROUP BY tt1.id 
;
우욱님이 2012-06-08 15:13에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6387쿼리 변경... [2]
짱가
2012-06-21
8171
6386시퀀스 문자열 증가 (A->B) [1]
초보
2012-06-20
8072
6385쿼리 조언 부탁드립니다. [2]
김종열
2012-06-18
7794
6383쿼리 질문입니다. [1]
정재훈
2012-06-08
7386
6382mssql 2000 에서 top [6]
노진광
2012-06-08
7703
6381MSSQL 2000 or MSSQL 2005 접속계정 패스워드 관리되는 파일, 레지 등등의 공간 [1]
최영호
2012-06-07
8413
6380날짜구간을 열로 구현하고 싶습니다. [5]
장성욱
2012-06-05
7997
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다