2015-05-11 3 views
-1

, например, скажем, у меня есть эта таблица продаж (ID, тип, цена).Возврат пропорциональной доли того же типа

Теперь, для каждой записи я должен вернуть свою долю в продажах своего типа.

Например, если мой общий доход от продажи велосипедов составляет 1000, и я продал 1 пару велосипедов за 100, поэтому его доля составит 0,1.

Как реализовать его по SQL? Спасибо!

+0

Данные примера и ожидаемый результат будут отличными, и их легко понять – HaveNoDisplayName

ответ

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.

Смежные вопросы