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

Sql server SQL Server中的转换率(子查询),sql-server,subquery,Sql Server,Subquery,我有一个销售数据,我有一个叫做stages的专栏,它有三个类别:赢、输和开 我想写一个关于转换率的查询。一名销售代表从阶段中获得的金额除以赢得的金额+失去的金额。销售代表在阶段中总共获得50个赢得的金额和120个(阶段赢得和失去的金额)。所以我的查询应该执行50/120。请查看图像链接以获取数据 select id, sum(sales) from df where id = '123' and stage ='won' group by i

我有一个销售数据,我有一个叫做stages的专栏,它有三个类别:赢、输和开

我想写一个关于转换率的查询。一名销售代表从阶段中获得的金额除以赢得的金额+失去的金额。销售代表在阶段中总共获得50个赢得的金额和120个(阶段赢得和失去的金额)。所以我的查询应该执行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')
我从这个查询中得到一个错误。不知道如何得到答案。
也许这就是你想要的:

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;
如果Denominator可以为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;

您正在使用SQL Server吗?你能提供一些样本数据和预期结果吗?请回答问题。同时添加预期输出。@Nirmal-请回答您的问题,并添加示例数据和预期结果。