用SQL求百分比,同一列数据

表为,table1列id,data,name,cost,想求出不同的人,COST所占的比列,如果张三cost的合计数/所有人的COST谢谢!如果中的果字多余的!... 表为,
table1
列 id, data, name, cost,想求出不同的人,COST所占的比列,如果张三cost的合计数/所有人的COST

谢谢!
如果中的果字多余的!
展开
 我来答
abill425
2010-03-23 · TA获得超过1726个赞
知道小有建树答主
回答量:663
采纳率:100%
帮助的人:1085万
展开全部
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数据库中测试通过。
unines
推荐于2017-09-10 · TA获得超过649个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:258万
展开全部
SELECT
(T2/T1.cost)/100 || ‘%’
FROM
(SELECT SUM(cost) As cost from table1) T1,
(SELECT SUM(cost)AS cost from table1
WHERE name = '张三') T2
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我要注册和登录
2010-03-23 · TA获得超过451个赞
知道小有建树答主
回答量:301
采纳率:100%
帮助的人:419万
展开全部
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='张三'

这里是所有人的统计 结果是小数 没有加百分号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式