RedShift:构造时在大小写后舍入数字

RedShift: rounding numeric after case when construction

我尝试使用这个转换

    CASE
        WHEN s.files_duration != '' THEN s.files_duration
        ELSE 0.0 
    END :: NUMERIC AS files_duration_2

对于 RedShift。

我正在等待此字段中的小数,例如:2.52 等。但值四舍五入为 3 等。为什么?

你能告诉我我做错了什么吗?

谢谢。

转换为不带刻度的数字基本上是将其定义为整数,因此 3。来自 RS 文档“如果未指定,默认刻度为 0。”

这个 SQL 片段提出了很多问题(比如 s.files_duration 是字符串还是数字类型?)但是转换为 NUMERIC(18,0) 似乎是问题的根源。尝试 NUMERIC(12,2) - 或任何对您的数据有意义的精度和比例。