mysql语句如下怎么让他的占比和累计占比后都带%,不是小数,不知道怎么加了

image.pngselect rank() over(order by (销售金额/累计) desc) as 排名,PRODUCTNAME as 产品名称,销售金额,(销售金额/累计) as 占比,(累加/累计) as 累计占比

from

(

select PRODUCTNAME,销售金额,sum(销售金额) over() as 累计,sum(销售金额) over(order by 销售金额) as 累加

from

(

select PRODUCTNAME,sum(SALE_AMOUNT*PRICE) as 销售金额

from sql2002_01 inner join sql2002_03 on sql2002_01.PRODUCTID=sql2002_03.PRODUCTID

group by PRODUCTNAME

) t

) tt

where 累加/累计>0.8;

用户DZNws0326467 发布于 2022-4-12 18:10 (编辑于 2022-4-12 18:10)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
好好生活好好学习Lv7资深互助
发布于2022-4-12 18:22(编辑于 2022-4-12 18:24)

select concat(0.12*100,'%')

保留几位小数

ROUND(5.55,2)四舍五入,取位数

最佳回答
0
lbstjwLv7初级互助
发布于2022-4-12 18:26

用到了MySQL字符串处理中的两个函数concat()和left()实现查询结果以百分比显示

1、CONCAT(str1,str2,...)

返回来自于参数连结的字符串。如果任何参数是NULL, 返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。

示例

代码如下:

select CONCAT('My', 'S', 'QL');

-> 'MySQL'

select CONCAT('My', NULL, 'QL');

-> NULL

select CONCAT(14.3);

-> '14.3'

2、LEFT(str,length)

从左开始截取字符串.说明:left(被截取字段,截取长度)

结合1、2 两个函数:

concat ( left (数值1 / 数值2 *100,5),'%') as  占比,(累加/累计) as 累计占比 

楼主的好几层嵌套我也没太读懂,嘿嘿

最佳回答
0
shinger@126.comLv2见习互助
发布于2022-4-13 11:03

数据库计算出值就行了,小数格式的。显示为百分比交给前端来做,也就是你的模板,设置单元格的格式为百分比

最佳回答
0
shixyLv5见习互助
发布于2022-4-13 11:52

数据库查出来的数据不要在乎格式,格式可以在前端报表进行调整

最佳回答
0
NikoLv4见习互助
发布于2022-4-13 13:16

image.png

  • 5关注人数
  • 592浏览人数
  • 最后回答于:2022-4-13 13:16
    请选择关闭问题的原因
    确定 取消
    返回顶部