【发布时间】:2022-01-17 22:06:41
【问题描述】:
我在数据库中有这些值:
| Sno | values | avg |
|---|---|---|
| 1 | 0.06 | 0.06 |
| 2 | 5.0 | 5 |
| 3 | 7.0 | 7 |
| 4 | 25.0 | 25 |
| 5 | 24 | 24 |
我能够使用以下方法将值四舍五入到小数点后两位:
ceil((AVG( value ) )*100)/100 as avgs
如果我们有更多数据,那是正确的,但如果我们对每个 sno 都有一个值,那么平均值也应该是这样的:
| avg |
|---|
| 0.06 |
| 5.0 |
| 7.0 |
| 25.0 |
| 24 |
我们该如何处理呢? 谁能帮我解决这个问题?
【问题讨论】:
-
请edit 包含minimal reproducible example 的问题:
CREATE TABLE为您的表声明;示例数据的INSERT语句; YOUR 尝试 SQL 语句(完整的语句而不是单个表达式);问题的英文描述; 您的解决方案的问题/错误;以及该样本数据的预期输出。 -
您的意思是您希望小数点后至少有一个零 - 在您的示例的最后一行中您没有 24 吗?如果是这样,那是格式问题,而不是计算问题。还是您想完全保留您在
values中显示的内容 - 暗示这是一个字符串,而不是数字,并且您的计算依赖于隐式转换? -
目前还不清楚您要解决什么问题,因为预期的输出看起来与数据库中的值完全相同,除了
.0附加到某些值(但不是全部其中)。 -
如果你取平均值,那么输入必须是数字,而不是字符串。如果它们是数字,您如何在同一列中显示 25.0 和 24?甚至不要考虑您的任何计算 - 只需查看您的输入列,称为
values。当然,作为一个数字,25.0和25是一样的,一个数字列只能以一种格式显示。在你问一个关于“平均”和“四舍五入”的问题之前,整个事情都是没有意义的。