我想计算每个用户在彼此“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

完成时间:
Name            difference_5
__________      _____________
Don             1
James           0
Sarah           2
Becca           0

最佳答案

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

根据Andreas的评论编辑。

08-08 05:36