avatar
刚电面一个,fail了# DataSciences - 数据科学
g*d
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.
avatar
l*m
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

avatar
w*p
3
二楼的很对。lag就行了。比较两行的差。连续有两个lag为 0就可以判断
avatar
B*g
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

avatar
a*k
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
avatar
g*d
6
多谢,受教了!
以前一直用mysql,确实不知道lag,应聘的公司确实是用oracle的。self-join这个答案
很巧妙!
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。