SQL 使用 varchar 中以英寸为单位的身高和 varchar 中以磅为单位的体重来计算 BMI 到小数点后 2 位的查询

SQL query to calculate a BMI to 2 decimal places using height in inches in varchar and weight in pounds in varchar

我正在尝试编写一个 Amazon Redshift SQL 查询来计算 body 质量指数 bmi,使用 varchar 中的身高(英寸)和 varchar 中的体重(磅)到小数点后两位。我有这个不起作用:

SELECT ID,
       CAST(height_in AS decimal),
       CAST(weight_lbs AS decimal),
       CAST(CAST(weight_lbs AS decimal(4, 2))/ (CAST(height_in AS decimal(4, 2)) * CAST(height_in AS decimal(4, 2))) * 703 AS decimal(4, 2)) AS calc_bmi
FROM table
WHERE
 table.ID IN ('a', 'b');

谢谢!

decimal(6,2) 试试这个,我已经在评论中说过了。另外,您的查询遗漏了一对括号。

(weight / (height * height)) * 703

而不是:

weight / (height * height) * 703

由于后者会先相乘(height2 * 703),这不是你想要的

您的查询应如下所示:

SELECT ID,
        CAST(height_in AS decimal),
        CAST(weight_lbs AS decimal),
        CAST((CAST(weight_lbs AS decimal(6, 2))/ (CAST(height_in AS decimal(6, 2)) * CAST(height_in AS decimal(6, 2)))) * 703 AS decimal(6, 2)) AS calc_bmi
FROM table
WHERE
table.ID IN ('a', 'b');

编辑:对于这些查询,您的数据库实际上包含 height_inweight_lbs 的值是至关重要的,否则 CAST 操作将出错。

是的,我意识到我数据库中的一些重复字段确实是空的,一旦我删除它们,代码 运行 就没有错误了。我是编码的新手。感谢您的帮助!