SQL 查询商品的平均销售额

SQL query to derive average sale of an item

下面是两个表格。一件商品在不同时期以不同的价值出售。我需要计算商品的平均销售额。我需要找到一个最佳的工作查询。我认为诀窍是将每个销售日期与他们的 start_date 和 end_date 映射起来,并将数量乘以该期间各自的价格,然后使用公式总销售额/总数量得出平均数。

CREATE TABLE sales(
 item_id varchar(255) ,
 start_date date ,
 end_date date,
 price int 
) ;

insert into sales values 
('mobile','2021-01-01','2021-01-05',500),
('mobile','2021-01-06','2021-01-09',400),
('mobile','2021-01-10','2021-01-15',900) ;



CREATE TABLE item(
 sales_id int,
 item_id varchar(255) ,
 sales_date date ,
 quatity int 
) ;

insert into item values 
(101,'mobile','2021-01-01',10),
(102,'mobile','2021-01-06',20),
(103,'mobile','2021-01-15',30) ;
            select item_id, sum(total_amount)/sum(quatity) avg_price from
            (
            select s.item_id, s.price, i.quatity, s.price * i.quatity as total_amount
            from sales s, item i where i.item_id = s.item_id
            and i.sales_date between s.start_date and s.end_date
            ) as A
            group by item_id; 

请试试这个,

SELECT 
i.item_id,avg(s.price*i.quatity) FROM 
item I 
LEFT JOIN 
sales S
on
I.item_id=S.item_id
AND I.sales_date >=S.start_date AND I.sales_date<=S.end_date
group by i.item_id;