小数保留小数点和两位小数

一、数据库sqlite

二、需求:

计算利润 并将利润字段拆分为整数和小数两个字段,小数保留小数点和两位小数

三、遇到问题:

round(x,y) y不好使了

select

substr(到货日期,1,10) as 到货日期,

cast(REPLACE(订单ID,substr(订单ID,1,2),'C') as text) as 订单ID,

货主城市,

(应付金额 - 运货费)as 利润,  

ceil((应付金额 - 运货费))as 利润整数,-- round 四舍五入 ceil 向上取整 floor向下取整

round((应付金额 - 运货费),3) 利润小数

from

订单

执行效果如下

image.png

  1. 订单ID有小数点

  2. 利润小数那里截取不到类似.0、.25这样的数据

  3. 货主城市不一致应该是数据集不一致 (我的数据集是安装finreport时候复制新的.db文件拿来的) 这个应该问题不大吧

回复图

image.png

问题图1

image.png

问题图2

image.png

怎么避免后面的10变成C........

勇敢牛牛!!!!

image.png

FineReport 南巷尕杰 发布于 2022-1-6 16:50 (编辑于 2022-1-6 18:01)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-1-6 16:53(编辑于 2022-1-6 17:55)

select

订单ID as 原始订单id,

substr(到货日期,1,10) as 到货日期,

cast(REPLACE(订单ID,substr(订单ID,1,2),'C') as text) as 订单ID,

'C' || substr(订单ID,3,10) as neworder_id,

货主城市,

(应付金额 - 运货费)as 利润,  

ceil((应付金额 - 运货费))as 利润整数,-- round 四舍五入 ceil 向上取整 floor向下取整

round((应付金额 - 运货费),3) 利润小数,

printf("%.2f",(应付金额 - 运货费)) AS 利润小数22,

substr(printf("%.2f",(应付金额 - 运货费)),instr(printf("%.2f",(应付金额 - 运货费)),"."),3) AS 利润小数25

from

订单

  • 南巷尕杰 南巷尕杰(提问者) 有小数了 我在试截取
    2022-01-06 17:00 
  • CD20160914 CD20160914 回复 南巷尕杰(提问者) sqlite数据库限制太多了。自己电脑安装一个mysql。把sqlite的数据使用报表导出来后。直接导入到mysql里面去方便得多。。。比如你要订单表,你就先用报表工具把所有数据预览出来。然后下载为excel。最后再导入到mysql里面去。。。这样的话你操作就方便多了。
    2022-01-06 17:07 
  • 南巷尕杰 南巷尕杰(提问者) 回复 CD20160914 我现在就是用的mysql数据库 导入的.db文件
    2022-01-06 17:08 
  • 南巷尕杰 南巷尕杰(提问者) 看回复图
    2022-01-06 17:09 
  • CD20160914 CD20160914 回复 南巷尕杰(提问者) 你都用mysql数据库了。那直接用mysql的语法呢。。mysql用round函数呀。
    2022-01-06 17:10 
  • 2关注人数
  • 1087浏览人数
  • 最后回答于:2022-1-6 18:01
    请选择关闭问题的原因
    确定 取消
    返回顶部