我只有一列“男性”和“女性”,并计算了百分比并以此形式显示它们,
Gender %
M 50.8
F 49.2
如何计算%,以使结果显示在两个单独的列上?(Microsoft SQL),例如;
M F
50.8 49.2
答案 0 :(得分:0)
使用表达式时的大小写尝试条件聚集
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
答案 1 :(得分:0)
进行汇总
select Gender,
max(case when Gender='M' then value end),
max(case when Gender='F' then value end)
from table group by Gender
答案 2 :(得分:0)
SELECT *
FROM (
SELECT
Gender, %
from tableName
) as s
PIVOT
(
SUM(%)
FOR Gender IN (M,F)
)AS pvt
如果有任何问题,请告诉我。
答案 3 :(得分:0)
只需使用条件聚合:
select max(case when gender = 'M' then [%] end) as m,
max(case when gender = 'F' then [%] end) as f
from t;
答案 4 :(得分:0)
看起来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的百分比
希望这会有所帮助