按列值从行中返回百分比

  • 本文关键字:返回 百分比 sql
  • 更新时间 :
  • 英文 :


我有一个带有3列的表:name,a,b。

"名称"中的名称多次重复。

我希望,对于每个名称中的每个名称,请返回" a"中的值之和,而" b"中的值之和。

例如:

Name    A    B 
---------------
'fds'   5    4
'fds'   3    6
'keo'   3    4

我想获得此表:

Name    Percentage
-------------------
'fds'      0.8
'kep'      0.75

您需要使用group by

    select Name, cast(sum(A) as float)/cast(sum(B) as float) Percentage
    from TableName
    group by Name

AB的数据类型是什么?在大多数数据库中,在大多数情况下,这将起作用:

select name, sum(A) / sum(B) as ratio
from t
group by name;

写这篇文章以防止 0的划分:

select name, sum(A) / nullif(sum(B), 0) as ratio
from t
group by name;

如果列都是整数(任何形式),则某些数据库确实会进行整数划分。在这种情况下,我经常乘以1.0:

select name, sum(A) * 1.0 / nullif(sum(B), 0) as ratio
from t
group by name;

请注意,我将列重命名为ratio。传统上,percentages从0到100,而不是从0到1。

最新更新