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 27949 게시물 읽기
No. 27949
년,월간 합계 쿼리를 한번으로 끝낼수 없는건가요?
작성자
초보
작성일
2008-12-29 13:28ⓒ
2008-12-29 19:41ⓜ
조회수
6,937

MySQL 4.0.22 입니다.


Table 구성이


  varchar(20)  f_id     // member id (중복)

  int(11)  f_value        // point

  int(11)  f_date         // timestamp


이렇습니다.


여기에서 조건의 따라 소팅된 값을 구하고 싶습니다.

1. 월간으로 조회시 월간순으로 출력하되 년간의 값이 나와야 함(월간에 포함되지 않은 회원도 포함이 되어야 함) 

2. 년간으로 조회시 년간순으로 출력하되 월간의 값이 나와야 함

----------------------------------------------

  순위 | 회원아이디 | 월간 | 년간

----------------------------------------------


공통 : f_id 별로

1. f_date 가 2008-01-01 ~ 2008-12-31 까지의 기간동안 f_value 합계(년간)

2. f_date 가 2008-12-01 ~ 2008-12-31 까지의 기간동안 f_value 합계(월간)


$s_year = 1199113200;      // 2008-01-01

$e_year = 1230695999;      // 2008-12-31

$s_month = 1228057200;    // 2008-12-01

$e_month = 1230695999;  // 2008-12-31


// 정렬 조건

if(월간조회면) $order by = 'month_value';

else $order by = 'year_value';


질의할 시간값과 정렬 조건을 위와 같이 구해 놓고


SELECT

  f_id,

  if(f_date BETWEEN $s_year AND $e_year, SUM(f_value), 0) AS year_value,

  if(f_date BETWEEN $s_month AND $e_month, SUM(f_value), 0) AS month_value

FROM

  table_name

GROUP BY f_id

ORDER BY $order_by DESC


이렇게 쿼리를 작성하였는데 년간은 구해지는데

월간이 구해지지 않습니다. 


년간으로 조회를 하면 년간으로 소팅이 되면서 해당회원들의 월간합계가 구해져야 하고

월간으로 조회를 하면 월간으로 소팅이 되면서 해당회원들의 년간합계가 구해지고 월간에 없는 회원들도 년간은 나타나도록 하는..


이런 조건의 질의를 어찌 구성해야 하는지요?

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

아래와 같이 작성하니 의도하신 대로 잘 됩니다.

SELECT

f_id,

SUM(if(f_date BETWEEN '2009-01-01' AND '2009-12-31', f_value, 0)) AS year_value,

SUM(if(f_date BETWEEN '2009-03-01' AND '2009-03-31', f_value, 0)) AS month_value

FROM

a

GROUP BY f_id

ORDER BY month_value

 

SUM 함수 위치를 if 바깥으로 빼는게 맞지 않을까요?

박현우(lqez)님이 2009-01-05 01:44에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27952mysql_waitpid 사용법 문의드립니다.
짝퉁헤리포터
2009-01-06
5465
27951게시물이동 쿼리하나만 부탁합니다 [2]
초보
2009-01-05
4660
27950IPv6 애플리케이션과 DB의 연동시 요구사항 [1]
IPv6
2008-12-30
5266
27949년,월간 합계 쿼리를 한번으로 끝낼수 없는건가요? [1]
초보
2008-12-29
6937
27948Full Table Scans [1]
박신득
2008-12-29
5567
27947slave DB 변경에 관한 방법론에 대해서 문의드립니다.
박성원
2008-12-26
4826
27946update 쿼리 시간 [1]
2008-12-25
5794
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다