微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最大投票百分比

如何解决最大投票百分比

假设一个小镇正在举行选举,每个公民都可以随意投票,但投票次数越多,他们的投票就会分裂。

我的输入如下

表:town_elections

Voter Vote
Jane Jane 
Howard Jane
John Howard
John Jane
Jane John
Sara Howard

预期:

Jane    Jane   0.33
Howard  Jane   0.33
John    Howard 0.5
John    Jane   0.33
Jane    John   1.0
Sara    Howard 0.5

解决方法

试试下面的查询。对于您想要的结果,cast to decimal 在这里使用

with MyCTE
as
(
select 
voter,Vote,count(*) over(PARTITION BY Vote order 
by Vote) as votecount
from town_elections
)
select Voter,cast((cast(100 as decimal(18,2))/cast(votecount as 
decimal(18,2)))/100.00 as decimal(18,2)) as percentage from MyCTE
,

您可以简单地使用 group by 计算投票,然后根据与计数的匹配来划分每一行。

尝试以下操作:

;with cte as
(
   select vote,count(vote) cnt
   from yourtable t
   group by vote
)

select t.*,cast(1.0/cnt as numeric(5,2)) as share
from yourtable t
join cte on cte.vote = t.vote

您也可以使用自连接来获得所需的结果。

请参阅 dbfiddle here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。