Rõ ràng là conversion_units
là một chuỗi có thể chứa các giá trị không thể chuyển đổi thành numeric
.
Vấn đề ngay lập tức của bạn có thể được giải quyết theo cách này:
SUM(NULLIF(conversion_units, '')::numeric)
nhưng có thể có các giá trị khác.
Bạn có thể thử sử dụng regexp để khớp với các chuỗi có thể chuyển đổi:
SUM((CASE WHEN conversion_units ~ E'^\\d(?:\\.\\d)*$' THEN conversion_units END)::numeric)