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_in
和 weight_lbs
的值是至关重要的,否则 CAST
操作将出错。
是的,我意识到我数据库中的一些重复字段确实是空的,一旦我删除它们,代码 运行 就没有错误了。我是编码的新手。感谢您的帮助!
我正在尝试编写一个 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_in
和 weight_lbs
的值是至关重要的,否则 CAST
操作将出错。
是的,我意识到我数据库中的一些重复字段确实是空的,一旦我删除它们,代码 运行 就没有错误了。我是编码的新手。感谢您的帮助!