我想计算每个用户在彼此“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的评论编辑。