Q&A

  • Query에 대한 질문.
DB 서버에서 시간대별로 가입한 사람의 수에 대해 통계를 내고 싶습니다.

어떻게 해야 할까요.



음 두시간 단위니깐

(0~2, 2~4, ...,22~24) = 12개의 조건(아마도 between이겠죠??)이 들어가야 합니다..



한문장에서 12가지의 조건을 줘서 12개의 필드를 count 함수로 뽑아내야 하는데..

이런 방법이 있습니까?? count로 뽑아내서 StringGrid에 집어넣어야 합니다.



저는 무식하게 12개의 query 컴포넌트를 삽입해서 query문을 12개 줬습니다..

헌데 하고 나니까 누가 소스보면 절 욕할것 같아 두렵습니다.

이거 어떻게 해결해야 할까요.. 하나의 query문으로 해결하는 방법이 있을까요..

저 무식한놈 만들지 마시고 도움을 주십시요.. 고수님들.

1  COMMENTS
  • Profile
    머리나쁜얀 2000.06.27 00:42
    선해석 wrote:

    > DB 서버에서 시간대별로 가입한 사람의 수에 대해 통계를 내고 싶습니다.

    > 어떻게 해야 할까요.

    >

    > 음 두시간 단위니깐

    > (0~2, 2~4, ...,22~24) = 12개의 조건(아마도 between이겠죠??)이 들어가야 합니다..

    >

    > 한문장에서 12가지의 조건을 줘서 12개의 필드를 count 함수로 뽑아내야 하는데..

    > 이런 방법이 있습니까?? count로 뽑아내서 StringGrid에 집어넣어야 합니다.

    >

    > 저는 무식하게 12개의 query 컴포넌트를 삽입해서 query문을 12개 줬습니다..

    > 헌데 하고 나니까 누가 소스보면 절 욕할것 같아 두렵습니다.

    > 이거 어떻게 해결해야 할까요.. 하나의 query문으로 해결하는 방법이 있을까요..

    > 저 무식한놈 만들지 마시고 도움을 주십시요.. 고수님들.





    case를 쓰세여

    필드명 ttime이라고 합시다 데이터형식은 0100,0200,이라고 하면

    가입자를 TUSER라고 하면



    select (CASE COPY(TTIME,1,2) WHEN '01' THEN COUNT(TUSER) ELSE 0)+ //1시 ~ 2시

    (CASE COPY(TTIME,1,2) WHEN '02' THEN COUNT(TUSER) ELSE 0),

    (CASE COPY(TTIME,1,2) WHEN '03' THEN COUNT(TUSER) ELSE 0)+ //3시~4시

    (CASE COPY(TTIME,1,2) WHEN '04' THEN COUNT(TUSER) ELSE 0),

    (CASE COPY(TTIME,1,2) WHEN '05' THEN COUNT(TUSER) ELSE 0)+

    (CASE COPY(TTIME,1,2) WHEN '06' THEN COUNT(TUSER) ELSE 0),

    (CASE COPY(TTIME,1,2) WHEN '07' THEN COUNT(TUSER) ELSE 0)+

    (CASE COPY(TTIME,1,2) WHEN '08' THEN COUNT(TUSER) ELSE 0),

    (CASE COPY(TTIME,1,2) WHEN '09' THEN COUNT(TUSER) ELSE 0)+

    (CASE COPY(TTIME,1,2) WHEN '10' THEN COUNT(TUSER) ELSE 0),

    (CASE COPY(TTIME,1,2) WHEN '11' THEN COUNT(TUSER) ELSE 0)+

    (CASE COPY(TTIME,1,2) WHEN '12' THEN COUNT(TUSER) ELSE 0),

    쭉쭉쭉 24시까지...

    FROM TABLE1

    WHERE TTIME BETWEEN '0100' AND '1200'

    GROUP BY TTIME



    이렇게 하면 될겁니다..