SQL:查找行之间的差异

Don*_*n P 5 mysql sql group-by distinct

我想计算每个用户在彼此的'5'内有多少行.

例如,Don-501和Don-504应该被计算在内,而Don-501和Don-1600不应该被计算在内.

开始:

Name        value
_________   ______________
Don         1235
Don         6012
Don         6014
Don         6300
James       9000
James       9502
James       9600
Sarah       1110
Sarah       1111
Sarah       1112
Sarah       1500
Becca       0500
Becca       0508
Becca       0709
Run Code Online (Sandbox Code Playgroud)

完:

Name            difference_5
__________      _____________
Don             1
James           0
Sarah           2
Becca           0
Run Code Online (Sandbox Code Playgroud)

Jer*_*yth 2

ABS()函数与子查询中的自连接结合使用:

所以,像这样:

SELECT name, COUNT(*) / 2 AS difference_5
FROM (
  SELECT a.name name, ABS(a.value - b.value) 
  FROM  tbl a JOIN tbl b USING(name)
  WHERE ABS(a.value - b.value) BETWEEN 1 AND 5
) AS t GROUP BY name
Run Code Online (Sandbox Code Playgroud)

根据安德烈亚斯的评论进行编辑。