计算 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 舍入到第一个小数位。

Demo here

为什么不使用 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。