sql - SQL:显示的小数超出要求
问题描述
所以这是我的代码。
SELECT Concat(Round(SUM(Coalesce(Price.Morning, Price.Day,
Price.Evening)*Tickets.count),2),' €') AS 'Total',
Concat(Round(SUM(Price.Morning * Tickets.count) * 100 /
(SUM(Coalesce(Price.Morning, Price.Day, Price.Evening)*Tickets.count)),2),'%')
AS 'Riti',
Concat(Round(SUM(Price.Day * Tickets.count) * 100 /
(SUM(Coalesce(Price.Morning, Price.Day, Price.Evening)*Tickets.count)),2),'%')
AS 'Dienas',
Concat(Round(SUM(Price.Evening * Tickets.count) * 100 /
(SUM(Coalesce(Price.Morning, Price.Day,
Price.Evening)*Tickets.count)),2),'%')
AS 'Evening'
FROM Price,Tickets
WHERE Tickets.Price_ID = Price.Price_ID
;
它显示如下:
一切正常,但我只需要逗号后的 2 个小数,但它仍然显示超过 2 个。
解决方案
不要在 SQL 中进行数字格式化。让显示层(应用程序、报表、表单等)进行格式化。它限制了你适应不同文化、使用偏好等的能力。
只需返回原始数据并摆脱格式:
SELECT
SUM(Coalesce(Price.Morning, Price.Day, Price.Evening)*Tickets.count) AS 'Total',
SUM(Price.Morning * Tickets.count) /
SUM(Coalesce(Price.Morning, Price.Day, Price.Evening)*Tickets.count) AS 'Riti',
SUM(Price.Day * Tickets.count) /
SUM(Coalesce(Price.Morning, Price.Day, Price.Evening)*Tickets.count) AS 'Dienas',
SUM(Price.Evening * Tickets.count) /
SUM(Coalesce(Price.Morning, Price.Day, Price.Evening)*Tickets.count AS 'Evening'
FROM Price,Tickets
WHERE Tickets.Price_ID = Price.Price_ID
Coalesce(Price.Morning, Price.Day, Price.Evening)*Tickets.count
您还可以通过将重复计算放在子查询中来简化这一点。
推荐阅读
- ansible - Ansible:删除不在我的 host_vars 中的接口
- winapi - 使用 BitBlt 捕获并通过 GDI+ 编码时出现 BufferOverflow 错误
- shell - 使用符合 POSIX 标准的 sed 修改 shell 变量
- html - 如何摆脱文本输入中闪烁的伪影/错误和电子中的反应选择输入?
- gstreamer - Gstreamer 合成器使用 filesrc mp4 文件
- python - 从没有明确方法组织 url 的网站上抓取位置
- jquery - 在 node.js 中使用 JQuery 的最佳方式
- java - Java中的意外修改
- firebase - 从 Firestore 在 Flutter 中搜索
- google-colaboratory - Google 协作将 .gsheet 与我的所有 .csv 文件一起添加,但无法从后端获取文件