Столбец суммы, но для каждой строки - PullRequest
0 голосов
/ 11 октября 2018

Как сделать, как

this

, и я хочу получить результат, как

this

и то, что я уже пробую, похоже на это

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

Но результат не такой, как я ожидал.

1 Ответ

0 голосов
/ 11 октября 2018

Вы, похоже, хотите получить «бегущую сумму», например,

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

, и кажется, что дополнительная точка может вычитать 2-ю последнюю бегущую сумму из финала, как это.

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, это всего лишь предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...