mysql - 查询以计算前几行中出现的数字的计数
问题描述
我有一个像这样的表格视图:
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。
解决方案
我想你需要类似的东西:
select
a.id, count(distinct b.picks)
from my_table a
join my_table b on b.picks = a.picks
and b.id between a.id - 3 and a.id - 1
group by a.id
推荐阅读
- react-native - 重命名项目后我的反应原生项目无法构建
- java - IntelliJ -- 显示不同类的类结构...
- python - 你能弄清楚为什么我的代码给了我一个 IndexOutOfBounds 错误吗?
- sql - 给出所选成本中心的名称 例如:
- javascript - 在日历中画一条线
- javascript - 在HTML电子邮件c#MVC中使用href传递参数
- sql - 在重复项中选择值,在一列中没有最大值(Oracle)
- openshift-origin - 如何设置 Openshift Origin 路由器
- numpy - 如何为内存映射文件使用 CUDA 固定的“零拷贝”内存?
- vue.js - 如何使用 Vuejs 和 Axios 读取深度 JSON 数据