我在PostgreSQL中有2个表,Schema ==> STS
product_price_log
包含product_name
列(字符不同),K(数字),sale_date
(日期)product_transaction
包含product_name
列(字符不同),price
(数字),sale_date
(日期)我想获取sale_date = '2018-01-15' and '2018-01-01'
的json数据。
产品价格应来自product_price_log
表格和product_transaction
表中的销售数据,以便汇总报告。
这是我的疑问:
(SELECT
json_agg(j.*)
from(
select
a.sale_date, a.product_name, sum(a.quantity) as quantity, sum( a.quantity * b.price) as total_sale
from(
select
sale_date, product_name, quantity
from
sts.product_transaction p
where
sale_date = '2018-01-15' or sale_date = '2018-01-01' and quantity > 0
)a
inner join (
select * from(
select product_name, price, sale_date from sts.product_price_log where sale_date <= '2018-01-15' order by sale_date desc limit 1
union all
select product_name, price, sale_date from sts.product_price_log where sale_date <= '2018-01-01' order by sale_date desc limit 1
)a order by sale_date
)r on (a.product_name = r.product_name and a.sale_date = r.sale_date)
group by
sale_date,
product_name
)j)
;
QUERY PLAN
Aggregate (cost=230444.51..230444.52 rows=1 width=28)
-> Subquery Scan on j (cost=230290.98..230444.50 rows=1 width=28)
-> GroupAggregate (cost=230290.98..230444.49 rows=1 width=20)
如何降低时间成本或优化此查询?