iT邦幫忙

1

SQL求解决方法!

dt
  • 分享至 

  • xImage
  •  

大佬们,比如数据是这样的
dt|result|user
20220917 12:00:00|1|a
20220917 10:10:00|1|a
20220917 11:05:00|1|a
20220917 15:08:00|0|a
20220917 16:01:00|0|a
20220917 17:00:00|1|a

.....

就是想求某天中result连续的最大值,比如这里20220917 当天a的最高连续是3


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
OuJiaHao
iT邦新手 4 級 ‧ 2022-09-24 15:57:42
-- init schema & data
drop table if exists UserResult
create table UserResult(
	dt datetime,
	result int,
	[user] varchar(20)
)

insert into UserResult
select * from (values ('20220917 12:00:00', 1,'a')
,('20220917 10:10:00',1,'a')
,('20220917 11:05:00',1,'a')
,('20220917 15:08:00',0,'a')
,('20220917 16:01:00',0,'a')
,('20220917 17:00:00',1,'a')
,('20220917 18:00:00',1,'a') 
) as temp(dt, result, [user])

-- result here
;with temp as(
	select result, 
		dt,
		[user],
		Row_Number() over(order by dt) as rid,
		ROW_NUMBER() OVER (PARTITION BY result ORDER BY dt) AS rn    
	from UserResult
)
select top 1 result, count(*) as number
from temp
group by result, rid - rn
order by count(*) desc

參考資料

如何對連續紀錄做分群

OuJiaHao
iT邦新手 4 級 ‧ 2022-09-24 16:07:58
【**此則訊息已被站方移除**】

我要留言

立即登入留言