总和列,但对于每一行

Posted

技术标签:

【中文标题】总和列,但对于每一行【英文标题】:Sum column but for each row 【发布时间】:2018-10-11 00:36:03 【问题描述】:

怎么做

我想得到像

这样的结果

而我已经尝试过的就是这样

select no, student, sum(point) from student group by no, student

但结果并不像我预期的那样。

【问题讨论】:

你的逻辑不干净,说明你如何得到 10 的 sum_point 和 2 的 extra_point :(该死,我读错了专栏。以后你会粘贴示例数据作为文本吗?(想象一下,如果答案是查询的图像,会很沮丧。)这是一个格式化链接固定表ozh.github.io/ascii-tables @Used_By_Already 感谢您的链接,我会记住的.. :) 【参考方案1】:

您似乎想要一个“运行总和”,例如

select
     no
   , student
   , sum(point) over(partition by student order by no) run_sum
from student

而且看起来加分可能会像这样从决赛中减去倒数第二个总和。

WITH cte
AS (
    SELECT
        no
      , student
      , SUM(point) OVER (PARTITION BY student ORDER BY no) run_sum
      , ROW_NUMBER() OVER (PARTITION BY student ORDER BY no DESC) rn
    FROM student)
SELECT
    t.*
  , coalesce(t.rum_sum,0) - coalesce(ex.run_sum,0) AS extra_point
FROM cte t
LEFT JOIN (
    SELECT
        *
    FROM cte
    WHERE rn = 2) ex ON t.student = ex.student
                        AND t.rn = 1
                        AND ex.rn = 2
;

但没有关于 extra_point 所需逻辑的更多指导,这只是猜测。

【讨论】:

很抱歉,我没有为我的结果提供解释逻辑,但上面的答案正是我想要的。感谢您的帮助,我支持您.. :)

以上是关于总和列,但对于每一行的主要内容,如果未能解决你的问题,请参考以下文章

SQL:获取行列值的总和

为啥我的结果集没有为每一列生成总和?

[TJOI2011]构造矩阵

React Bootstrap:行列的垂直对齐?

UVA11383 Golden Tiger Claw

UVA11383 Golden Tiger Claw