用SQL求百分比,同一列数据
表为,table1列id,data,name,cost,想求出不同的人,COST所占的比列,如果张三cost的合计数/所有人的COST谢谢!如果中的果字多余的!...
表为,
table1
列 id, data, name, cost,想求出不同的人,COST所占的比列,如果张三cost的合计数/所有人的COST
谢谢!
如果中的果字多余的! 展开
table1
列 id, data, name, cost,想求出不同的人,COST所占的比列,如果张三cost的合计数/所有人的COST
谢谢!
如果中的果字多余的! 展开
3个回答
展开全部
select name,str((case (select isnull(sum(cost),0) from table1) when 0 then 0 else cost/(select isnull(sum(cost),0) from table1) end)*100,10,2)+'%' as bfb from table1
以上sql语句较长,解释一下:
使用case...when...end,是为了避免合计cost为0的话,出现无法除0的错误;结果值乘以100是为了配合百分比格式;使用str(...,10,2)函数是把计算出来的数字值转换成两位小数精度的文本串;最后,在结果后加上一个百分号,效果就完整了。
以上语句在sqlserver数据库中测试通过。
以上sql语句较长,解释一下:
使用case...when...end,是为了避免合计cost为0的话,出现无法除0的错误;结果值乘以100是为了配合百分比格式;使用str(...,10,2)函数是把计算出来的数字值转换成两位小数精度的文本串;最后,在结果后加上一个百分号,效果就完整了。
以上语句在sqlserver数据库中测试通过。
展开全部
SELECT
(T2/T1.cost)/100 || ‘%’
FROM
(SELECT SUM(cost) As cost from table1) T1,
(SELECT SUM(cost)AS cost from table1
WHERE name = '张三') T2
(T2/T1.cost)/100 || ‘%’
FROM
(SELECT SUM(cost) As cost from table1) T1,
(SELECT SUM(cost)AS cost from table1
WHERE name = '张三') T2
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select aaa.name,aaa.cost_s/bbb.cost_t 比例 from
(select name,cast (sum(cost) as float) cost_s from T group by name) aaa,
(select cast(sum(cost) as float) cost_t from T)
bbb
--where name='张三'
这里是所有人的统计 结果是小数 没有加百分号
(select name,cast (sum(cost) as float) cost_s from T group by name) aaa,
(select cast(sum(cost) as float) cost_t from T)
bbb
--where name='张三'
这里是所有人的统计 结果是小数 没有加百分号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询