如何使用window函数计算某一行值相对于除某一行以外的其他行值的差值之和

n6lpvg4x  于 2021-06-19  发布在  Mysql
关注(0)|答案(4)|浏览(336)

如何使用窗口函数计算某一行值相对于不包括该行的其他行值的差值之和。
例如:卷号,学生表总分
滚动总分
1 50

u1ehiz5o

u1ehiz5o1#

->按abs(60-50)+abs(60-70)==20计算
3 70

33qvvth1

33qvvth12#

->按abs(70-50)+abs(70-60)==30计算
我们要计算每个学生的总分之和。

qc6wkl3g

qc6wkl3g3#

即使包含当前行(marks)值,也应该不重要;因为在这种情况下abs(差)将为0,并且不会影响和。
总之,在您的例子中,一个简单的“自连接”使用条件 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
bmp9r5qi

bmp9r5qi4#

->按abs(50-60)+abs(50-70)==30计算
2 60

相关问题