如何使用 PostgreSQL 在 DML 中更改计算属性的数据类型?

How do I change the data type of a calculated attribute in DML with PostgreSQL?

知道可以使用SQL数据定义语言(DDL)Server Postgres(SP):

并且对于 SQL 数据操作语言 (DML) SP:

当我们创建一个 SELECT 时,我们投影的属性会出现在 DDL 中建立的数据类型中。并且当用2个相同类型的属性执行操作生成一个在SELECT中计算的属性时,类型将与操作数的类型相同但我需要更改它。

我的问题是我想计算两种数据之间的平均值:A / B * 100 bigint 但是当我这样做时 A/B我在计算字段中获得 0,因为我还需要十进制值将它们乘以 100

以下 sql 指令不适用于 bigint:

SELECT id, a/b
FROM <mytable>;

计算字段中的这个 returns 0 值对我来说是我想要避免的。

而我想要的是:

SELECT id, first_operand * 100
FROM    (SELECT id, a/b TYPE <newtype> AS first_operand
        FROM <mytable>) firstTable
NATURAL JOIN <mytable>;

所以我想知道的是如何更改 SELECT 投影中的数据类型,或者我有什么方法可以做到这一点?

在 Postgres 中,您可以轻松地 cast 通过将 ::<type to cast to> 附加到表达式。所以在你的情况下,你可以尝试 a::decimal / b::decimal 得到 a / b 的结果是 decimal。 (实际上,如果您不喜欢那么冗长的话,这里只转换一个操作数就足够了。)

您可以使用以下方式进行类型转换:

cast function i.e. CAST ( expression AS type )

或者:

PostgreSQL type cast ::  i.e. expression::type