时间:2021-05-23
在ITPUB上有一则非常巧妙的SQL技巧,学习一下,记录在这里。
最初的问题是这样的:
我有一个表结构,
fphm,kshm
2014,00000001
2014,00000002
2014,00000003
2014,00000004
2014,00000005
2014,00000007
2014,00000008
2014,00000009
2013,00000120
2013,00000121
2013,00000122
2013,00000124
2013,00000125
(第二个字段内可能是连续的数据,可能存在断点。)
怎样能查询出来这样的结果,查询出连续的记录来。
就像下面的这样?
2014,00000001,00000005
2014,00000009,00000007
2013,00000120,00000122
2013,00000124,00000125
ITPUB上的朋友给出了一个非常巧妙的答案:
SELECTb.fphm,MIN(b.kshm)Start_HM,MAX(b.kshm)End_HM
FROM(SELECTa.*,TO_NUMBER(a.kshm-ROWNUM)cc
FROM(SELECT*
FROMt
ORDERBYfphm,kshm)a
)b
GROUPBYb.fphm,b.cc
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
原始题目:给定一个无序的整数序列,找最长的连续数字序列。例如:给定[100,4,200,1,3,2],最长的连续数字序列是[1,2,3,4]。小菜给出的解法:f
连续6个奇数a,a+2,a+4,a+6,a+8,a+10都是合数,求最小的a的暴力解法。先上结果,后面贴上代码:1次连续n=9,连续值个数:1;耗时:0ms,总
1.intersect为取多个查询结果的交集;2.查询两个基本时间段内表记录的SQL语句;select*fromshengjibiaotwheret.creat
功能:判断所填入号码的运营商该函数按照以下标准实现移动:134-139151188联通:130-132156电信:133189155关于这些号段之外的号码查询将
总结如下:1.存储过程:sql语句的批处理,面相应用和服务的,将常用的连续操作做成批处理形式。解决瓶颈问题:大量sql查询速度慢s2.索引服务:建立key和文档