浮点数的 SQL 分组精度
Posted
技术标签:
【中文标题】浮点数的 SQL 分组精度【英文标题】:SQL group by precission for floats 【发布时间】:2021-11-01 13:39:52 【问题描述】:我遇到了一个有点奇怪的问题。我需要按定义的精度对 SQL 结果进行分组。数据库系统是 PostgreSQL,我们总共有几亿个值。
例如,假设我有以下群众的列表
-
1.0005
1.0010
3.0000
4.0016
4.0014
这些都是 Dalton 中的化学质量,我想在一个物化视图中按 +/-5 mDa 和在另一个物化视图中按 +/- 10mDa 对它们进行分组。所以 0.0005 和 0.0010。
有人可以帮忙吗?
【问题讨论】:
提示:SELECT TRUNC(4.0016 * 10000 / 5), TRUNC(4.0014 * 10000 / 5), TRUNC(4.0016 * 10000 / 10), TRUNC(4.0014 * 10000 / 10)
.
你的问题不清楚,给我们一些期望输出的例子
它们实际上是浮点型还是十进制类型?
【参考方案1】:
感谢@Jeroen Mostert,这似乎可以解决问题。
从 result_annotations_msms racm 中选择 avg(ion) 作为 ion,sum(intensity) 作为强度,其中 "method" = 'a' and target_id = 'b' group by TRUNC(ion * 1000 / 5)
【讨论】:
以上是关于浮点数的 SQL 分组精度的主要内容,如果未能解决你的问题,请参考以下文章