Sql server SQL Server中的转换率(子查询)
我有一个销售数据,我有一个叫做stages的专栏,它有三个类别:赢、输和开 我想写一个关于转换率的查询。一名销售代表从阶段中获得的金额除以赢得的金额+失去的金额。销售代表在阶段中总共获得50个赢得的金额和120个(阶段赢得和失去的金额)。所以我的查询应该执行50/120。请查看图像链接以获取数据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
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-请回答您的问题,并添加示例数据和预期结果。