【发布时间】:2022-01-03 22:01:51
【问题描述】:
我正在尝试从 dbo.DimCustomer 获取最高 (100) 年收入 (YearlyIncome) 的百分比,并且我想要显示男性和女性年收入百分比的 2 列“%M”和“%F”
这是我的代码:
Select Top(100)
Case dbo.DimCustomer.Gender
When 'M' Then (Count(dbo.DimCustomer.Gender)*100)/sum(YearlyIncome)
End as '%M',
Case dbo.DimCustomer.Gender
When 'F' Then (Count(dbo.DimCustomer.Gender)*100)/sum(YearlyIncome)
End as '%F'
From
dbo.DimCustomer
Group By
Gender
这是我得到的结果。我做得对吗?
我可以在没有Null 的情况下显示它们吗?只有 2 列并排,1 行是百分比?
【问题讨论】:
-
示例数据和预期结果很好地补充了 SQL 问题,最好是 Minimal, Reproducible Example
-
平均值是除以条目数,而不是相乘。
-
前 100 名按什么排序?你没有
ORDER BY。此外,TOP 100将在分组后计算,因此仅在您有 100 种性别时才有效,我认为我们还没有完成 -
@Charlieface 我不认为我需要它,因为我应该只有 2 列和 1 行吧?
-
好吧,如果你想要前 100 个 of 的东西,你需要定义:你想要的顶部是什么,顶部的实际含义是什么,顶部是什么,底部是什么.否则你会得到任意行
标签: sql sql-server