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
운영게시판
최근게시물
DB2 Q&A 3048 게시물 읽기
No. 3048
월단위, 주단위 조회 쿼리,,
작성자
purmir(purmir)
작성일
2011-04-15 12:29
조회수
8,358

 SELECT  (DBMAYY || RIGHT(DIGITS(DBMAMM),2) || RIGHT(DIGITS(DBMADD),2)) AS DATE,

DBMPOT, 
DBMAVR,
DBMCOD
FROM 테이블 명
WHERE DBMCOD = ?
AND     DBMMGB = ?
AND     (DBMAYY || RIGHT(DIGITS(DBMAMM),2) || RIGHT(DIGITS(DBMADD),2)) BETWEEN ? AND ?
 
 
 현재 쿼리가 이렇게 되어 있습니다.  주어진 기간 안에 일별 데이터들을 가져오는 쿼리인데요,, 
 
 이 쿼리의 내용을 가지고 월단위(매월 1일자 기준으로 데이터 조회), 주단위(매주 월요일 기준으로 데이터 조회)를 하려고 합니다. 
 
 저는 today 기준으로  가져오는 것인줄 알고 그랬는데,, 제가 잘못 알았나 봅니다. 
 
 어떻게 하면 될까요?  답변 부탁드립니다. 
이 글에 대한 댓글이 총 6건 있습니다.

 Date나 Timestamp 가 아니라 년도, 달, 일자가 별도의 column으로 되어 있는건가요? 해당 site에 맞게 구성하셨을테지만, 단순히 질문만 놓고 봐서는 Date type의 column 하나를 이용하게는게 더 편할듯 싶네요. 

짧은 생각으로는 generate always 를 써서 해당 일자를 Date type으로 변환시키도록 column을 하나 추가하고, 거기에 index를 걸어서 쓰면 어떨까 싶네요. 

ALTER TABLE <테이블명> add column "Date" generated always as ( date (  '<year - month - day >') ) ;

저렇게 concat을 하면 index를 안타지 않나요? ^^

짝퉁헤리포터(bh1004)님이 2011-04-16 07:13에 작성한 댓글입니다.

답변 감사합니다. ^^ 해당 테이블에 대한 컬럼 생성 권한이 없습니다.

단지 조회문에서 해당데이터를 주단위로 가져오려는 쿼리문을 작성하려고 합니다.

월단위의 표현은 ( 년도컬럼 || 월컬럼) as date이런식으로 가져오면 되는데,,

주단위의 표편은 어떻게 해야되는지 난감하고 데이터를 가져오는것도 마찬가지라서요,,

초보라서 질문조차도 초보스럽기 그지 없네요^^ 답변 감사하며 혹시 아시는 분 계시면 추가 답변 부탁드려도 될까요...

purmir(purmir)님이 2011-04-18 09:58에 작성한 댓글입니다.

주 단위로 갖고 오고 싶으다는 부분을 좀 더 명확히 설명해 주실 수 있으신가요? 예를 들어, 

DATE

2011-04-10  

이런식으로 값 자체를 넣고 싶으신건지.. 

아니면, 매주 월요일 기준으로 지난주 일요일 ~ 토요일 간의 자료를 검색하고자 하는데, 이 부분을 항시 자동으로 생성되게끔 하는 것이 궁금하신건지요?

현재 검색하고자 하는 table에 자료가 몇 건 정도 들어 있는지요? 가능하면 table description을 올려주시면 좀 더 확인해 보기 좋을텐데 말이죠. ^^ Table에 대한 cloumn  생성 권한이 없으면, 단순히 select만 가능하신건가요?

 

짝퉁헤리포터(bh1004)님이 2011-04-19 06:10에 작성한 댓글입니다.

 수정이 빈번해서 추가질문을 할때마다 내용이 조금씩 달라지게 되어 죄송합니다. 

 기준조건은 없고 단순히 해당 기간내의 데이터를 날짜로 그 YYYY년도 N주차 이런식으로 주 단위로

select 로 해서 가져와서 뿌려주면 될듯 합니다. 

 (DBMAYY || RIGHT(DIGITS(DBMAMM),2) || RIGHT(DIGITS(DBMADD),2))  이 형식

20110418 식으로 표현됩니다. 이것을 DATE('2011-04-18')으로 되게 하려면 어떻게 하면 될까요?

WEEK_ISO를 적용하려고 합니다. 

purmir(purmir)님이 2011-04-19 09:03에 작성한 댓글입니다.

 해당 table의 description을 좀 올려 주실 수 있으세요? column의 type이 뭔지 그리고 data가 어떻게 들어가는지 알 수 있으면 좋을 것 같네요. 

DATE('2011-04-18') 과 같이 하시려면, CONCAT 같은거를 쓰거나 string을 바로 넣어도 될 듯 한데요? description이 있으면 테스트해보기 좀 더 수월할 것 같습니다.

짝퉁헤리포터(bh1004)님이 2011-04-20 07:37에 작성한 댓글입니다.

테이블에 날짜는 대부분 인덱스의 컬럼에 포함됩니다. 왜냐? 많이 조회하니까요

그런데 날짜관련 컬럼을 가공하게 되면 인덱스를 사용할 없습니다.

table full scan 이나 임시 인덱스를 생성해 버리는 수가 있습니다.

대상 테이블에 대해 컬럼을 변경할 수 없는 상황이이고 시간 정보가 없는 날짜만 사용할 경우라면

날짜테이블을 하나 만들어서 날짜 테이블에서 뽑고자 하는 날짜 범위를 잡고 이 집합과 대상 테이블 조인하면  대상 테이블에 대해 인덱스를 사용할 수 있습니다.

날짜테이블(T_YYYYMMDD)

(

YYYYMMDD VARCHAR(8)   /* Primary Key */

YYYY  VARCHAR(4)

MM VARCHAR(2)

DD VARCHAR(2)

DT DATE   /* YYYY-MM-DD 형식*/

)

 

kyusu님이 2011-08-02 14:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3051기간 제외 데이터 처리 관련 질문 올립니다. [2]
purmir
2011-04-25
6562
3050table schema 알아내기 [3]
db2 어려
2011-04-18
6409
3049디비 서버 교체하려고 합니다.. 질문좀..(왕초보) [1]
김성오
2011-04-16
5423
3048월단위, 주단위 조회 쿼리,, [6]
purmir
2011-04-15
8358
3047DB2 프로시저 작성시 결과값 리턴 [1]
DB2초보
2011-04-15
7287
3046Unique Constraint VS Unique Index [1]
짝퉁헤리포터
2011-04-14
6169
3045질문 드립니다. [1]
purmir
2011-04-08
5276
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.058초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다