postgresql 如何将一列的单个单位值除以另一列的聚合值?

prdp8dxp  于 2023-02-15  发布在  PostgreSQL
关注(0)|答案(1)|浏览(139)

我一直试图从我的数据库中提取个人分数,并将其除以同名学生的中学分数的总和,而不将其汇总,也不维护单个单元格。
我有一个这样的数据库

name  score 1  score 2
reed   30      10
reed   50      20 
brick  60      30
brick  60      12

并且我需要新列"分数%2"的此输出

name  score 1  score 2  score % 2  
reed   30      10       10/(30+50)=0.125   
reed   50      20       20/(30+50)=0.25
brick  60      30       30/(60+60)=0.25
brick  60      12       10/(60+60)=0.1

所以我想我的查询应该是这样的:Score 1/SUM(Score 2) OVER (PARTITION BY Name)
但这实际上并不起作用,可能是因为PARTITION BY试图按名称求和,而查询的第一部分引用的是单独的单元级数据。
我想要的可能吗?谢谢!

sgtfey8w

sgtfey8w1#

你可以像这样加入SUM。

Select score1, 
        score2, 
        sums.score1,
        Score2/sums.score1 AS [score % 2]
    FROM table INNER JOIN (
            SELECT name,
                SUM(Score1) score1
            FROM table 
            GROUP BY name
        ) AS sums ON table.name = sums.name

相关问题