g*********d 发帖数: 24 | 1 一家小破公司,开始没当回事,后来发过来几道题,都sql,让做。
然后给跪了,很受打击!
最后一道题到现在没想明白是不是不用cursor根本就做不出来。
id1 time1 1
id2 time2 1
id3 time3 1
id4 time4 2
id5 time4 1
id6 time5 2
id7 time6 2
....
求所有同样数字连续超过三次的纪录。大概就这个意思吧,比如上面的例子中,1就是
符合条件的,因为连续时间段内出现了三次,但是2就不行,因为三个2中间插了一个1. |
l*******m 发帖数: 1096 | 2 lag
【在 g*********d 的大作中提到】 : 一家小破公司,开始没当回事,后来发过来几道题,都sql,让做。 : 然后给跪了,很受打击! : 最后一道题到现在没想明白是不是不用cursor根本就做不出来。 : id1 time1 1 : id2 time2 1 : id3 time3 1 : id4 time4 2 : id5 time4 1 : id6 time5 2 : id7 time6 2
|
w**p 发帖数: 4080 | 3 二楼的很对。lag就行了。比较两行的差。连续有两个lag为 0就可以判断 |
B*****g 发帖数: 34098 | 4 楼上都对,继而验证了90%+的SQL问题都能用partition by解决。
返回来说,楼主面的地方要用mysql怎么办?
【在 g*********d 的大作中提到】 : 一家小破公司,开始没当回事,后来发过来几道题,都sql,让做。 : 然后给跪了,很受打击! : 最后一道题到现在没想明白是不是不用cursor根本就做不出来。 : id1 time1 1 : id2 time2 1 : id3 time3 1 : id4 time4 2 : id5 time4 1 : id6 time5 2 : id7 time6 2
|
a****k 发帖数: 117 | 5 If using mysql, we can use self-join.
id, time, num
id1 time1 1
id2 time2 1
id3 time3 1
SELECT DISTINCT (a.num) FROM table a JOIN table b ON a.num=b.num JOIN table
c ON a.num=c.num WHERE a.id-b.id = 1 and b.id-c.id=1 |
g*********d 发帖数: 24 | 6 多谢,受教了!
以前一直用mysql,确实不知道lag,应聘的公司确实是用oracle的。self-join这个答案
很巧妙! |