sql - 如何使用 PostgreSQL 更改 DML 中计算属性的数据类型?
问题描述
知道可以使用 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
投影中的数据类型或者我有什么方法?
解决方案
在 Postgres 中,您可以通过附加到表达式轻松地进行转换。::<type to cast to>
因此,在您的情况下,您可以尝试a::decimal / b::decimal
获得a / b
成为decimal
. (实际上,如果你喜欢它不那么冗长,这里只需要一个操作数就足够了。)
推荐阅读
- python - tensorflow 如何在人脸识别上进行训练、验证和测试?
- python - 如何在没有目标值的数据集上使用决策树进行预测?
- python - 使用 PIL 库从 YCbCr 到 RGB 的色彩空间转换?
- ios - 使用 Swift 5.1 for iOS 中的 SwiftUI 使用 RadialGradient 填充动态大小的 Rectangle
- ruby-on-rails - Rails 5 yield 给出重复的内容
- python - 将python文件导入另一个python文件
- python - 使用 Python 和 Selenium 抓取 Instagram 上喜欢帖子的帐户的名称,但仅返回 11 个名称
- r - expss 包可以处理带有加权数据的多个答案问题吗?
- php - PHP 在 Heroku 上连接到 Postgres 时遇到问题
- jenkins - 在 Bash 脚本中,如何退出整个脚本并返回成功