Как вычислить сумму разности значения строки относительно значения других строк, исключая строку, в частности, используя оконную функцию - PullRequest
0 голосов
/ 20 октября 2018

Как рассчитать сумму разности значения строки относительно значения других строк, исключая строку, в частности, с использованием оконной функции.

Например, нет: Свернуть нет, общее количество баллов для таблицы ученика дано

Общая сумма баллов

1 50 -------------> рассчитывается как абс (50-60) + абс (50-70) == 30

2 60 -------------> рассчитывается как abs (60-50) + abs (60-70) == 20

3 70 -------------> рассчитывается как abs (70-50) + abs (70-60) == 30

, и мы должны рассчитать сумму (абсолютную разницу общих оценок по отношению к другим студентам) длякаждый студент.

1 Ответ

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

Это действительно не должно иметь значения, даже если вы включаете текущее значение строки (метки);потому что ABS (разница) будет 0 в этом случае, и не будет влиять на SUM .

В любом случае, в вашем случае, простое "Self-Join"используя условие, что t1.roll_no <> t2.roll_no должно быть достаточно, с Group By:

SELECT
  t1.roll_no, 
  t1.marks, 
  SUM(ABS(t1.marks - t2.marks)) AS sum_abs_difference 
FROM 
  your_table_name AS t1 
JOIN your_table_name AS t2 
  ON t2.roll_no <> t1.roll_no 
GROUP BY t1.roll_no, t1.marks
...