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
운영게시판
최근게시물
MySQL Q&A 30059 게시물 읽기
No. 30059
데이터 축약정리 문의(Curser/Fetch/Procedure 관련)
작성자
딘스(dyens)
작성일
2011-09-18 21:33ⓒ
2011-09-18 21:52ⓜ
조회수
8,176

아래와 같은 Mysql 테이블이 있습니다.

 

회원 ID&IP 별로 로그인&아웃 시간을 기록해서, 언제 어디서 얼마동안 접속했는지

파악하는 테이블 인데요

 

관리프로그램상 오류로,  1번 로그인&로그아웃 할때 1개의 레코드만 축적되야 하는데

일부회원은 로그인 상태에서도 거의 같은데이터가 몇초간격으로 계속 쌓이는 에러가 발생 했습니다.

(StartTime/EndTime 이 몇초씩 증가하면서)

 

그래서 아래와 같이, ID&IP별로 연속된 데이터가 StartTime이 60초 이내면 1개의 레코드로

축약을 하려 합니다.

 

 

 

제가 생각하기에 쿼리로는 불가능한 작업 같고(쿼리로 가능하다면 정말 좋겠습니다.)

 

아래 로직으로 Procedure란 방법으로 Curser를 이용해서 처리해야 될것 같은데요

(전 나비캣으로 쿼리만 날릴줄 압니다만, 이번에 처음 시도해 볼려구요)

 

1. 아래쿼리로 데이터 전체를 불러서

 

SELECT
UserID, IP, StartTime,. EndTime
FROM
users_history_ips
ORDER BY
UserID ASC,
StartTime ASC

 

2. 아래 순서도로 처리

 

 

해결안을 알려 주시면 정말 감사 하겠습니다.

(데이터가 80만건이라 걱정이 앞서네요 ^^;....)

 

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

흠..

create table new_table as

select userid, ip, min(startTime) as startTime, max(endTime) as EndTime

from 그놈테이블

 

그런 다음 index다 맞춰주시고

그놈테이블, new_table의 이름을 바꿔주시면 될 듯...

 

.님이 2011-09-19 13:34에 작성한 댓글입니다. Edit

답변 감사 합니다.

 

말씀 하신것처럼,  추출된 데이터로 테이블을 만들고, 원테이블은 삭제후,

Rename방식이 맞는것 같은데 제가 질문글에서 누락 시켰군요 ^^;.....

 

말씀 하신 쿼리에는 문제가 있는데, 위 쿼리는 1레코드 밖에 추출되지 못하죠.

"GROUP BY UserID,.IP" 를 추가하면 엇비슷하게 추출할 수 있으나, 60초 조건을 만족시킬수도

없고, 불연속된 데이터(UserID&IP)는 없어져 버립니다.

딘스(dyens)님이 2011-09-19 15:41에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30062이력관리 필드에 내용 추가를 하고 싶습니다. [1]
장기정
2011-09-21
7316
30061D/B 정규화 후 정규화 전처럼 view table만드는 방법 질문 [1]
김동진
2011-09-21
7665
30060공란을 0으로 불러오기 [1]
김양훈
2011-09-19
7242
30059데이터 축약정리 문의(Curser/Fetch/Procedure 관련) [2]
딘스
2011-09-18
8176
30058따옴표 문제...
정종영
2011-09-18
7138
30057매일 중복없이 테이블값 매칭 [1]
최원길
2011-09-09
7996
30056groupby로 특정 조건일때에만 합을 구하고 싶습니다. [1]
김성원
2011-09-09
8225
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다