【发布时间】:2019-07-08 20:36:06
【问题描述】:
我有一个这样的表格视图:
Id, Picks
5, 1
5, 5
5, 10
5, 20
4, 8
4, 10
4, 11
4, 22
3, 1
3, 8
3, 10
3, 25
2, 3
2, 5
2, 23
2, 24
1, 14
1, 17
1, 20
1, 24
有两列 Id 和 Picks。每次抽奖的 id 重复四次,其中有 4 个 1-25 之间的数字。
我想显示前 3 次抽奖中出现的每个抽奖号码的计数。因此,对于 id=5 的抽奖号码,如果这些号码在 id 为 4,3 和 2 的抽奖中出现一次,则将其计算在内。
所以对于上面的例子,计数是这样的:
Id, Count
5, 3
4, 2
etc.
如何通过 mysql 查询得到这个结果?表格视图没有唯一的 ID。
【问题讨论】:
-
我只有这些列,我在表格视图中将四列合二为一,我认为这会更简单,在这种情况下我不得不牺牲唯一 ID。所以在实际表中,我有一个唯一的 id,每个数字有 4 列。
-
ID
5的3是如何获得的? -
自己加入表,
ON t1.id < t2.id以获取 ID 号较低的行。 -
5,4是id。 3 和 2 是前 3 次抽奖中出现的数字的计数。
-
其实应该是
ON t1.id BETWEEN t2.id-3 and t2.id-1 AND t1.pick = t2.pick。然后只计算行数。