在两列中显示1列的SQL百分比
我有一列男性和女性,计算了百分比并将其显示出来在两列中显示1列的SQL百分比,sql,sql-server,pivot,Sql,Sql Server,Pivot,我有一列男性和女性,计算了百分比并将其显示出来 Gender% M 50.8 F 49.2 如何计算%以使结果显示在两个单独的列上?(Microsoft SQL),例如 mf 50.8 49.2 尝试使用case-when表达式进行条件聚合 select concat(max(case when gender='M' then valueofpercentage end),'%') as 'M', concat(max(case when gender='F' then valueofpe
Gender%
M 50.8
F 49.2
如何计算%以使结果显示在两个单独的列上?(Microsoft SQL),例如
mf
50.8 49.2
尝试使用case-when表达式进行条件聚合
select concat(max(case when gender='M' then valueofpercentage end),'%') as 'M',
concat(max(case when gender='F' then valueofpercentage end),'%') as 'F'
from tablename
做聚合
select Gender,
max(case when Gender='M' then value end),
max(case when Gender='F' then value end)
from table group by Gender
如果有任何问题,请告诉我。只需使用条件聚合:
select max(case when gender = 'M' then [%] end) as m,
max(case when gender = 'F' then [%] end) as f
from t;
看起来fa06的答案是正确的逻辑,但您在计算百分比时遇到了问题 以下是我刚刚创建的内容,旨在教您如何在sql中计算百分比:
declare
@m as decimal,
@f as decimal,
@t as int
set @m = 50
set @f = 40
set @t = @m+@f
select Cast(@m / @t * 100 as decimal(5, 2)) as m, Cast(@f / @t * 100 as decimal(5 ,2)) as f
在这个场景中,@m和@f只是虚拟数字,@t是总数,因此为什么@m+@f,下面是如何得到表中的计数数,其中性别是男性-显然,将'm'更改为'f'可以得到女性
select count(gender) from tablename where gender = 'm' as 'm'
要进行计算,您需要对其进行如下调整:
Select Cast(Count(select gender from tablename where gender = 'm') /
Count(select gender from tablename where gender in ('m', 'f')) * 100 as decimal(5,2)
as 'm' from tablename
免责声明-此代码未经测试。但如果它不起作用,逻辑是相关的
这只适用于男性,通过查看fa06的解决方案,可以进一步简化,但仅用于计算上述逻辑-因此:
特定性别的数量/拟用于
按*100计算的百分比
希望这有帮助我正在使用Microsoft SQL,很抱歉我忘了提及,谢谢!它可以工作,但是在没有计算百分比的情况下,我如何计算它,使它以所需的格式显示?我希望它们显示在两个单独的列上,如上一节所示line@RoiboisTx,您是否执行了它-它将在两列中显示值,但我想在解决方案中包括我对%的计算,不仅仅是值,如果我简单地将其插入其中,它就不起作用,我如何在解决方案中包括%的计算?@RoiboisTx,我已经修改了它-你现在可以检查抱歉,我的问题提出错误,我想知道“如何计算”百分比,以便显示在ColumnStanks上,这对计算后的显示有效,但是如果我没有计算出的%,我如何计算它以使其显示为所需?
Select Cast(Count(select gender from tablename where gender = 'm') /
Count(select gender from tablename where gender in ('m', 'f')) * 100 as decimal(5,2)
as 'm' from tablename