连续数据统计

ifoolish_z 2015-01-23 10:52:15
题目大意:

编写一个SQL查询找出所有至少 连续 出现3次的数字。

例如,给定上面的Logs表,1是唯一至少连续出现3次的数字。
表格logs 如下
+----+-----+
| Id | Num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+
想知道如何求解,希望得到详细的解答思路 代码有注释比较好。。谢谢了。
另外,我看到有段代码关于此题是这样写的
select distinct(a.Num)
from Logs a,Logs b,Logs C
where a.Id=b.Id+1
and a.Num=b.Num
and b.Id=c.Id+1
and b.Num=c.Num
想请教一下 where 哪儿的条件为什么是这样设置的?有点看不明白。
...全文
273 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
南宫曲直 2015-02-14
  • 打赏
  • 举报
回复
where 那块的含义是说这张表自己进行关联两次,关联的时候,第一张表的数据是第二张的后一条,第二张表的数据是第三张的后一条,而且第一张和第二张的Numz一样,第二张和第三张表记录的Num相同 但是这样做就如楼上所说如果多条连续的时候,不可能就关联多次,我觉得可以采取以下方式进行处理,可以处理多次情况 Mysql: 使用用户变量 @num进行统计,如果num的值进行该表了则@num置为1,如果num值相同,则加1,这样就相当于组内排序了,然后连续三条则num值为3,连续四条num值为4,只要最后过滤以下就可以了
pony520 2015-01-25
  • 打赏
  • 举报
回复
select num,count(*) from logs group by num having count(*)>=3

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧