簡體   English   中英

如何計算SQL Server中的列中大多數連續出現的值

[英]How to count most consecutive occurrences of a value in a Column in SQL Server

我的數據庫中有一個表Attendance

Date       | Present
------------------------
20/11/2013 |  Y
21/11/2013 |  Y
22/11/2013 |  N
23/11/2013 |  Y
24/11/2013 |  Y
25/11/2013 |  Y
26/11/2013 |  Y
27/11/2013 |  N
28/11/2013 |  Y

我想計算最連續出現的值YN

例如,在上表中, Y出現2,4和1次 所以我想要4作為結果。 如何在SQL Server中實現呢?

任何幫助將不勝感激。

嘗試這個:-

連續日期之間的差額將保持不變

   Select max(Sequence)
  from 
  (
   select present ,count(*) as Sequence,
         min(date) as MinDt, max(date) as MaxDt
         from (
                select t.Present,t.Date,
                    dateadd(day,
                              -(row_number() over (partition by present order by date))
                               ,date 
                          ) as grp
              from Table1 t
            ) t
  group by present, grp
  )a
   where Present ='Y'

SQL FIDDLE

您可以使用遞歸CTE進行此操作:

;WITH cte AS (SELECT Date,Present,ROW_NUMBER() OVER(ORDER BY Date) RN
              FROM Table1)
     ,cte2 AS (SELECT Date,Present,RN,ct = 1 
               FROM cte
               WHERE RN = 1
               UNION ALL
               SELECT a.Date,a.Present,a.RN,ct = CASE WHEN a.Present = b.Present THEN ct + 1 ELSE 1 END
               FROM cte a
               JOIN cte2 b
                 ON a.RN = b.RN+1)
SELECT TOP 1 *
FROM cte2
ORDER BY CT DESC

演示: SQL小提琴

請注意,由於您在問題中發布日期的格式,演示中的日期已更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM