1

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

  • 创造
  • 改变
  • 降低

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

  • 选择
  • 插入
  • 更新
  • 删除

当我们创建一个SELECT我们项目的属性时,我们在 DDL 中建立了它的数据类型。当使用 2 个相同类型的属性执行操作以生成在 a 中计算的属性时SELECT,类型将与操作数的类型相同,但我需要更改它。

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

以下 sql 指令不适用于bigint

SELECT id, a/b
FROM <mytable>;

这在计算字段中向我返回 0 值,这是我想要避免的。

我想要的是:

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

所以我想知道的是如何改变SELECT投影中的数据类型或者我有什么方法?

4

2 回答 2

2

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

于 2018-07-14T02:49:56.943 回答
0

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

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

或者也:

PostgreSQL type cast ::  i.e. expression::type
于 2019-03-20T06:10:49.307 回答