前言
有个投票H5项目需要在每个页面展示出每个作品数的得票率,本来打算用代码统计的,灵机一动,搜了一下,sqlserver函数就能实现,还蛮好用。
一、表结构
投票记录表
create table ufc_vote_rec(
vote_rec_id int primary key identity(1,1),
[user_id] int ,--用户id
vote_id int ,
cur_progress int default(0),--分类id
vote_works nvarchar(200)--作品名称
)
go
二、统计sql
思路:分组查出当前分类下每个作品点赞数,count查出这个分类总的点赞数,然后将结果作为一个表(方便取值),对两个字段进行函数计算。
select vote_works,convert(decimal(10, 2),(convert(decimal(10, 2),cnt)/ convert(decimal(10, 2),sum_cnt))*100) probability from (
select vote_works,count(vote_works) cnt,(select count(1) cnt from ufc_vote_rec where cur_progress=1) sum_cnt from ufc_vote_rec where cur_progress=1 group by vote_works
) m
结果展示,小数可以自己设置