죄송합니다.이 게시물이 중복되면.PostgreSQL : 날짜별로 그룹화하고 전날의 결과도 포함
저는 해당 펀드에서 발생한 거래마다 매일 특정 그룹의 주식을 보유한 고객의 수를 결정하는 쿼리를 작성하고 있습니다.
그래서 내 거래 테이블은 다음과 같습니다
는CREATE TABLE trans(
transID SERIAL PRIMARY KEY,
sin CHAR(9) REFERENCES customer(sin) ON UPDATE CASCADE ON DELETE CASCADE,
fundID INT REFERENCES fund(fundID) NOT NULL,
transDate DATE,
shares INT,
FOREIGN KEY (fundID) REFERENCES fund(fundID) ON UPDATE CASCADE ON DELETE CASCADE
);
여기 내 쿼리 :이 그 날에 주를 보유 총 고객을 반환
select f.transdate, count (f.sin)
from (select t1.transdate, t1.sin, sum(t2.shares)
from fund f natural join trans t1 natural join trans t2
where f.fundname='Energy'
and t1.sin = t2.sin
and t2.transdate <= t1.transdate
group by t1.transdate, t1.sin
having sum(t2.shares) > 0)as f group by f.transdate
order by f.transdate;
. 그러나 전날 같은 펀드에 주식을 보유한 고객을 추가하고 싶습니다.
그래서 나는 다음 삽입을 추가하면, 말할 수:이처럼되고 그것을 좋아하는 것, 그러나
transdate | count
------------+-------
2011-10-10 | 1
2011-10-11 | 1
2011-10-17 | 2
:
이INSERT INTO trans VALUES (DEFAULT, '1', '3', '2011-10-10', 400);
INSERT INTO trans VALUES (DEFAULT, '3', '3', '2011-10-11', 324);
INSERT INTO trans VALUES (DEFAULT, '5', '3', '2011-10-17', 201);
INSERT INTO trans VALUES (DEFAULT, '8', '3', '2011-10-17', 472);
그래서 내가 언급 쿼리가이 반환
transdate | count
------------+-------
2011-10-10 | 1
2011-10-11 | 2
2011-10-17 | 4
자세히 알 수 있듯이 2011-10-11 말에 총 2 명의 사람들이 해당 기금 등을 보유하고있었습니다.
어떤 도움이 필요합니까?
감사합니다 ... 나는 지금 그것을보고 있습니다.이게 내가 필요로하는 것처럼 보입니다. –
아무 문제 없어요 ... 그것이 효과가 있기를 바랍니다 !! –