SQL獲得連續的記錄的統計

2021-07-13 19:07:03 字數 514 閱讀 2671

select tyear, min(tdate) as startdate, max(tdate), count(tyear) as endnum	--tyear年,startdate連續記錄的開始時間,tdate連續記錄的結束時間,endnum連續的記錄樹

from (select a.*, a.tdate - rownum as gnum --a.tdate - rownum as gnum,將要比較的樹減去行號(作用:當a.tdate排序後再減遞增的rownum,如果為連續的記錄結果將相同,反之則不是連續的記錄)

from (select * from test_num order by tyear, tdate) a) --公升序排列要比較的資料

group by tyear, gnum --分組統計連續的記錄數

order by tyear, min(tdate)

以上為oracle例項額,mssql請使用row_number()代替rownum

SQL 連續記錄查詢

1 題目要求輸出的時連續三行的記錄,則可以選擇三張單錶進行自關聯,連線的要求即為id序號的遞增。連線方式為left join 如下圖即為無要求時的連線語句及結果 有圖可知,連線的每一行的 id 時從s1 到s2遞增1,再到s3遞增1。再因為連線的每一行即為代表連續的三行的記錄。根據題目要求,則要求p...

獲得所有表的表記錄,和使用空間的SQL

獲得所有表的表記錄,和使用空間的sql exec sp msforeachtable precommand n create table id int identity,表名 sysname,字段數 int,記錄數 int,保留空間 nvarchar 10 使用空間 varchar 10 索引使用空...

獲得所有表的表記錄,和使用空間的SQL

exec sp msforeachtable precommand n create table id int identity,表名 sysname,字段數 int,記錄數 int,保留空間 nvarchar 10 使用空間 varchar 10 索引使用空間 varchar 10 未用空間 va...