计算 SQL 查询中两列之间的百分比作为另一列
Calculate percentage between two columns in SQL Query as another column
我有一个 table 有两列,最大名额数 (capacity) 和可用名额数 (availablePlaces)
我想计算 availablePlaces 占容量的百分比。
availablePlaces capacity
1 20
5 18
4 15
期望的结果:
availablePlaces capacity Percent
1 20 5.0
5 18 27.8
4 15 26.7
有什么可以让我执行此操作的 SELECT SQL 查询的想法吗?
以下 SQL 查询将为您执行此操作:
SELECT availablePlaces, capacity, (availablePlaces/capacity) as Percent
from table_name;
试试这个:
SELECT availablePlaces, capacity,
ROUND(availablePlaces * 100.0 / capacity, 1) AS Percent
FROM mytable
您必须乘以 100.0 而不是 100,以避免整数除法。此外,您必须使用 ROUND
舍入到第一个小数位。
为什么不使用 format_number
之类的数字格式化函数(或数据库中的等效函数)将双精度数格式化为百分比?这个例子是通用的。返回值为字符串。
WITH t
AS
(
SELECT count(*) AS num_rows, count(foo) as num_foo
FROM mytable
)
SELECT *, format_number(num_foo/num_rows, '#.#%') AS pct_grade_rows
FROM t
这避免了使用 round
和分子乘以 100。
我有一个 table 有两列,最大名额数 (capacity) 和可用名额数 (availablePlaces)
我想计算 availablePlaces 占容量的百分比。
availablePlaces capacity
1 20
5 18
4 15
期望的结果:
availablePlaces capacity Percent
1 20 5.0
5 18 27.8
4 15 26.7
有什么可以让我执行此操作的 SELECT SQL 查询的想法吗?
以下 SQL 查询将为您执行此操作:
SELECT availablePlaces, capacity, (availablePlaces/capacity) as Percent
from table_name;
试试这个:
SELECT availablePlaces, capacity,
ROUND(availablePlaces * 100.0 / capacity, 1) AS Percent
FROM mytable
您必须乘以 100.0 而不是 100,以避免整数除法。此外,您必须使用 ROUND
舍入到第一个小数位。
为什么不使用 format_number
之类的数字格式化函数(或数据库中的等效函数)将双精度数格式化为百分比?这个例子是通用的。返回值为字符串。
WITH t
AS
(
SELECT count(*) AS num_rows, count(foo) as num_foo
FROM mytable
)
SELECT *, format_number(num_foo/num_rows, '#.#%') AS pct_grade_rows
FROM t
这避免了使用 round
和分子乘以 100。