Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
374 views
in Technique[技术] by (71.8m points)

postgresql - sql query select two periods for revenue

how is it possible to compare two period using one query for example:

SELECT s_campaign_id, COALESCE(SUM(f_revenue),0) AS revenue FROM tbl_reports WHERE (d_gen_date>='2020-12-15' AND d_gen_date<='2020-12-16') GROUP BY s_campaign_id

and have compare this with revenue of other period in the same query so for example i will want to get a list of revenue of period 1 + period 2

SELECT s_campaign_id, COALESCE(SUM(f_revenue),0) AS revenue FROM tbl_reports WHERE (d_gen_date>='2020-12-15' AND d_gen_date<='2020-12-16') as revenue1  AND (d_gen_date>='2019-12-13' AND d_gen_date<='2020-12-14') as revenue2 GROUP BY s_campaign_id

thanks


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You could use FILTER:

SELECT
    s_campaign_id
    , COALESCE ( SUM ( f_revenue ) FILTER(WHERE d_gen_date >= '2020-12-15' AND d_gen_date <= '2020-12-16'), 0 ) AS revenue1 
    , COALESCE ( SUM ( f_revenue ) FILTER(WHERE d_gen_date >= '2019-12-13' AND d_gen_date <= '2020-12-14'), 0 ) AS revenue2 
FROM
    tbl_reports 
WHERE
    ( d_gen_date >= '2020-12-15' AND d_gen_date <= '2020-12-16' )
OR  
    ( d_gen_date >= '2019-12-13' AND d_gen_date <= '2020-12-14' ) 
GROUP BY
    s_campaign_id;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...