返回相同类型的比例份额

时间:2015-05-11 18:17:53

标签: mysql sql aggregate

例如,假设我有这个表销售(ID,类型,价格)。

现在,对于每个条目,我必须返回其类型销售的比例。

例如,如果我从销售自行车的总收入是1000,而我卖了100双自行车,那么它的比例将为0.1。

如何通过SQL实现它? 谢谢!

1 个答案:

答案 0 :(得分:1)

设置:

create table sales (
    ID numeric,
    type varchar(20),
    price decimal
);

insert into sales values (1,'bike','900.00');
insert into sales values (2,'bike','100.00');

查询:

select s1.ID, s1.type, s1.price, (s1.price/s2.sum_price) as proportion
from sales s1
inner join (
    select type, sum(price) as sum_price
    from sales
    group by type
) s2
on s1.type = s2.type;

内部查询按类型获取所有总和。这是sum(col2) over (partition by col2)的模拟,可以在某些数据库中使用,但在MySQL中不可用。