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
운영게시판
최근게시물
PostgreSQL Q&A 5367 게시물 읽기
No. 5367
합계 구하는것 때문에 질문 드립니다..
작성자
박민재
작성일
2004-06-14 10:48ⓒ
2004-06-14 11:02ⓜ
조회수
1,898

아래와 같은 데이타 에서

날짜별 코드별로 합을 구하려고 하는데요..

 

 

 

날짜 | ES | PA | CA | 총합

2003-10-01 | 231000 | 0 | 0 | 231000

 

 

이런식으로 나오게 할수 없을까요?

 

 

 

 

sc_p_date | sm_parent_id | sc_p_price
---------------------+--------------+------------
2003-10-01 14:27:00 | ES | 33000
2003-10-01 15:47:52 | ES | 33000
2003-10-01 18:46:29 | ES | 165000
2003-10-01 18:57:36 | PA | 0
2003-10-02 03:13:15 | ES | 165000
2003-10-02 10:23:34 | PA | 0
2003-10-02 12:23:09 | ES | 165000
2003-10-02 13:39:26 | CA | 0
2003-10-03 13:00:33 | ES | 33000
2003-10-04 10:43:54 | ES | 33000
2003-10-04 11:51:54 | PA | 440000
2003-10-04 15:31:35 | PA | 132000
2003-10-06 14:54:13 | ES | 0
2003-10-06 16:33:06 | ES | 33000
2003-10-07 09:59:19 | ES | 33000
2003-10-07 10:20:00 | ES | 165000
2003-10-07 10:46:54 | CA | 110000
2003-10-07 11:53:53 | PA | 0
2003-10-07 13:05:56 | ES | 33000
2003-10-07 18:18:44 | ES | 33000

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

sum()

날자별로 합을 구한다면 group by 와 혼용하시면 될듯..

신기배(nonun)님이 2004-06-14 14:18에 작성한 댓글입니다.

결과물을 크로스 테이블 (cross table)이라고 합니다.

http://database.sarang.net/?inc=read&aid=5164&criteria=pgsql&subcrit=&id=&limit=20&keyword=%C5%A9%B7%CE%BD%BA%C5%D7%C0%CC%BA%ED&page=1

문서를 참조하세요.

문제 잘 푸시길.

 

김상기(ioseph)님이 2004-06-14 17:28에 작성한 댓글입니다.

반드시 날짜 | ES | PA | CA | 총합 포멧으로 DB가 출력해 줘야 하나요?

화면에만 그렇게 출력되면 되는 상황이라면 전 이렇게 하겠습니다.

 

select to_char(sc_p_date, 'YYYY-MM-DD') as day, sc_parent_id, sum(sc_p_price)

from test

group by day, sc_parent_id

order by day, sc_parent_id;

 

day | sc_parent_id | sum

------------+--------------+--------

2003-10-01 | ES | 198000

2003-10-01 | PA | 0

2003-10-02 | CA | 0

2003-10-02 | ES | 330000

2003-10-02 | PA | 0

2003-10-03 | ES | 33000

2003-10-04 | ES | 33000

2003-10-04 | PA | 572000

2003-10-06 | ES | 33000

2003-10-07 | CA | 110000

2003-10-07 | ES | 264000

2003-10-07 | PA | 0

 

작성하시는 어플리케이션에서 이렇게 질의를 해서 자료를 읽어오고 날짜가 같은 것을 종합해서 화면에 날짜 | ES | PA | CA | 총합 포멧으로 한줄 찍으면 되지 않을까요?

 

어플리케이션을 만드시는 것이 아니라면 PL/pgSQL로...?

 

좌우간 제 말은... 복잡한 쿼리를 만들어 DB를 못살게 구는 것 보다 어플 쪽에서 한번 더 처리해 주는게 나을 때도 있다는... 머리쓰기 시로...

박성철(gyumee)님이 2004-06-14 20:28에 작성한 댓글입니다.

댓들 달아 주셔서 감사 합니다..

 

이제야 감사글을 다네요..

 

상기님께서 올려주신 글 보구 크로스 테이블로 해결했습니다.

 

PL/pgSQL 은 제가 접해보지 못한터라.. 시간도 없고 해서..

 

나중에 꼭 한번 해봐야겠습니다.

 

답글 달아 주신분들 다시한번 감사드립니다.

박민재님이 2004-07-12 18:10에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5373소수점 유지.
이상호
2004-06-17
1989
5372pgadmin3 [2]
궁금
2004-06-16
1841
5368한국어 encoding? [10]
joesp
2004-06-15
8522
5367합계 구하는것 때문에 질문 드립니다.. [4]
박민재
2004-06-14
1898
5365group by 에서의 데이터 추출에 대하여 ㅠ.ㅠ [2]
궁금이
2004-06-11
1953
5362[질문] 설치과정에서 psql:relocation error에 관하여!! [1]
채정병
2004-06-09
1779
5361[질문] COPY from stdin 에서의 에러.. [4]
이수진
2004-06-08
2127
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다