SQL Server中的转换率(子查询)

时间:2017-05-14 18:44:25

标签: sql-server subquery

我有一个销售数据,其中我有一个名为阶段的列,其中有三个类别获胜,丢失和开放。

我想写一个转换率查询。从舞台上获得的金额赢得了一个销售代表赢得+损失的金额。销售代表在赢得的阶段和120个阶段(赢得和输掉的阶段)总计50个。所以我的查询应该执行50/120。请提供数据的图像链接。

select 
    id, sum(sales) 
from 
    df 
where 
    id = '123' 
    and stage ='won'
group by 
    id 
having 
    sum(sales) / (select sum(sales) 
                  from df 
                  where stage = 'Won' OR stage = 'Lost')

我从此查询中收到错误。不知道如何得到答案。 enter image description here

1 个答案:

答案 0 :(得分:1)

也许这就是你想要的:

select id,
    sum(case when stage = 'won' then sales end) * 1.0 / sum(sales)
from your_table
where stage in ('won', 'lost')
group by id;

如果denomintor可以为0,请使用NULLIF以避免除以零错误并返回null。

select id,
    sum(case when stage = 'won' then sales end) * 1.0 / nullif(sum(sales), 0)
from your_table
where stage in ('won', 'lost')
group by id;