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 39629 게시물 읽기
No. 39629
단골 고객 구하는 쿼리 질문 입니다.
작성자
박상민(withme9)
작성일
2012-09-10 10:45ⓒ
2012-09-10 11:16ⓜ
조회수
4,393

안녕하세요 혼자 고민하다가 질문 드립니다.

다음과 같이 상점을 방문한 고객 데이타 매출일자별로 들어 있습니다  

고객코드                           상점코드                 매출일자            ..................

11111                                  0110                       20120111       ..................

22222                                  0120                       20120211       ..................

33333                                  0110                       20120221       ..................

44444                                  0150                       20120221       ..................

11111                                  0110                       20120311       ..................

44444                                  0150                       20120321       ..................

22222                                  0130                       20120401       ..................

11111                                  0110                       20120521       ..................

22222                                  0120                       20120507       ..................

33333                                  0110                       20120621       ..................

44444                                  0150                       20120631       ..................

11111                                  0110                       20120701       ..................

44444                                  0150                       20120711       ..................

22222                                  0130                       20120811       ..................

 이중에서 정해진 기간동안에 한 매장을 방문했던 고객들을 뽑아오고 싶은데요.

위에 보면은 고객코드 11111 과 44444 가진 고객을 단골고객이라고 볼수 있겠습니다. 

 

제가 작성한 쿼리는 다음과 같습니다.

SELECT A.고객코드 , MAX(상점코드)

(

SELECT  고객코드 , 상점코드

     FROM 테이블

WHERE  매출일자 >=기준시작일

      AND  매출일자 <=기준종료일

GROUP BY 고객코드 , 상점코드

) A

GROUP BY A.고객코드

HAVING COUNT(*) = 1

 

이런식으로 구현을 했는데요 과연 제대로 했는지 의심 스럽고 또 데이타가 1억건이 넘어가니 쿼리 한번 돌리는것도

넘 오래 걸리네요.  

고수님들 쿼리좀 한번 검토 부탁 드리겠습니다.

질문 작성하다보니 인덱스에 관한 질문도 생기네요

 인덱스는 고객코드에는 걸려 있고 상점 코드에는 걸려 있지 않습니다. 상점코드에도 인덱스를 구성 하는게 더 낳을까요?

역시 가르침 기다리겠습니다...

 

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

 쿼리를 봤을땐 기간동안에 하나의 매장만 방문한 고객을 뽑는건가요?

그리고 인덱스는 매출일자로 만들면 더 빠르게 조회할수 있습니다.

TATA님이 2012-09-10 11:17에 작성한 댓글입니다. Edit

 인덱스를 생성할 수 있다면,

 

인덱스 생셩 :매출일자 + 고객코드 + 상점코드

index_ffs , parallel_index 를 사용하여 인덱스 scan 만으로도 좋겠네요.

 

tohappy(tohappy)님이 2012-09-10 15:42에 작성한 댓글입니다.
이 댓글은 2012-09-10 15:43에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
39632기간 건수 합계 구하기 [2]
마루아라
2012-09-10
4554
39631쿼리 질문입니다.. [1]
삐에로
2012-09-10
4106
39630프로시져 내에서 서브프로시져를 호출하고 결과를 기다리지 않는 법 [4]
이무용
2012-09-10
6223
39629단골 고객 구하는 쿼리 질문 입니다. [2]
박상민
2012-09-10
4393
39628oracle odbc로 접속후 where 절에 한글 검색을 하면 안나옵니다.
막시무스
2012-09-07
4804
39627기간별 이력 쿼리 질문 드립니다. [2]
논어
2012-09-07
5003
39625벌크인서트 질문입니다. [1]
홍두표
2012-09-06
4689
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다