如何在同一列sql中相乘

时间:2015-01-23 20:55:14

标签: sql postgresql

我有一个表三列的位置,计数位置,表来自。如何乘以(计数位置)然后除以得到百分比。

示例:尝试划分同一列中的两个位置!然后是100乘(Count Location / Count Location)*100

    Atlanta, GA 6   CL Table
    Atlanta, GA 20  TW Table
    The result  (6/20)*100=30%  


|Location     |Count Location|  Table From|
-------------------------------------------
  Atlanta, GA   6                CL Table
  Atlanta, GA   20               TW Table
  Austin, TX    27               TW Table
  Austin, TX    5                CL Table
  Chicago, IL   6                CL Table
  Chicago, IL   19               TW Table
  Corona, CA    6                CL Table
  Corona, CA    50               TW Table
  Dallas, TX    37               TW Table
  Dallas, TX    3                CL Table
  Denver, CO    3                CL Table
  Denver, CO    19               TW Table
  Houston, TX   21               TW Table
  Houston, TX   11               CL Table

是否有办法在所有地点执行此操作,并在旁边的新列中显示结果?或者我是否需要制作新表以使其更容易?

1 个答案:

答案 0 :(得分:1)

好的,现在我明白了。你想要TW的CL百分比。您可以使用窗口函数执行此操作:

select t.*,
       (100 * max(case when tablefrom = 'CL Table' then count end) over (partition by location)/
        max(case when tablefrom = 'TW table' then count end) over (partition by location)
       ) as percentage
from table t;

如果您只想要每个位置的结果(这对我来说更有意义),只需使用聚合:

select location,
       (100 * max(case when tablefrom = 'CL Table' then count end) /
        max(case when tablefrom = 'TW table' then count end)
       ) as percentage
from table t
group by location