Cast和Sum函数 - PostgreSQL

时间:2017-06-30 19:54:21

标签: sql postgresql casting

我试图找到cast_cost,shelf_price和bottle_price的总和,其中项目描述包括苏格兰威士忌或加拿大威士忌。但是,Bottle_price的值是一个价格,而不是像select语句中的其他项一样的数字。起初我尝试了这个查询,它返回了一个错误,因为bottle_price需要以不同的方式进行Cast。

select SUM(case_cost)+SUM(shelf_price)+SUM(bottle_price) as total
from public.products
where item_description ilike '%Scotch%' or item_description ilike '%Canad%';

之后,我创建了几个不同的查询并不断收到错误消息。这是我最近尝试简单地尝试使用bottle_price进行投射的尝试,也许我包含了太多的括号,但我在" AS"数字部分:

select (cast(sum (bottle_price AS numeric)))
from public.products
where item_description ilike '%Scotch%' or item_description ilike '%Canad%';    

任何人都可以帮助解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

首先cast然后sum生成的数值

select sum(cast(bottle_price AS numeric))
from public.products
where item_description ilike '%Scotch%' or item_description ilike '%Canad%';  

答案 1 :(得分:1)

根据所需的结果类型,它可能是

SUM(case_cost)+SUM(shelf_price)+SUM(bottle_price)::numeric as total

表示numeric结果或

SUM(case_cost)::money+SUM(shelf_price)::money+SUM(bottle_price) as total

表示money结果。

答案 2 :(得分:0)

这有用吗?

select (SUM(case_cost::numeric) + SUM(shelf_price::numeric) + SUM(bottle_price::numeric)
       ) as total
from public.products
where item_description ilike '%Scotch%' or item_description ilike '%Canad%';

我发现Postgres特定的::语法非常方便。另一方面,我觉得奇怪的是Postgres不允许加钱(默认情况下)。