溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQLserver 中怎么實現分組統(tǒng)計查詢

發(fā)布時間:2021-08-04 16:35:03 來源:億速云 閱讀:228 作者:Leah 欄目:數據庫

SQLserver 中怎么實現分組統(tǒng)計查詢,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

設置AccessCount字段可以根據需求在特定的時間范圍內如果是相同IP訪問就在AccessCount上累加。

 Create table Counter ( CounterID int identity(1,1) not null, IP varchar(20), AccessDateTime datetime, AccessCount int )

該表在這兒只是演示使用,所以只提供了最基本的字段 現在往表中插入幾條記錄 insert into Counter select '127.0.0.1',getdate(),1 union all select '127.0.0.2',getdate(),1 union all select '127.0.0.3',getdate(),1 1 根據年來查詢,以月為時間單位 通常情況下一個簡單的分組就能搞定復制代碼 代碼如下: select convert(varchar(7),AccessDateTime,120) as Date, sum(AccessCount) as [Count] from Counter group by convert(varchar(7),AccessDateTime,120)

像這樣分組后沒有記錄的月份不會顯示,如下: 這當然不是我們想要的,所以得換一種思路來實現,如下:復制代碼 代碼如下: declare @Year int set @Year=2009 select m as [Date], sum( case when datepart(month,AccessDateTime)=m then AccessCount else 0 end ) as [Count] from Counter c, ( select 1 m union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9 union all select 10 union all select 11 union all select 12 ) aa where @Year=year(AccessDateTime) group by m

2 根據天來查詢,以小時為單位。這個和上面的類似,代碼如下

 declare @DateTime datetime set @DateTime=getdate() select right(100+a,2)+ ':00 -> '+right(100+b,2)+ ':00 ' as DateSpan, sum( case when datepart(hour,AccessDateTime)> =a and datepart(hour,AccessDateTime) <b then AccessCount else 0 end ) as [Count] from Counter c , (select 0 a,1 b union all select 1,2 union all select 2,3 union all select 3,4 union all select 4,5 union all select 5,6 union all select 6,7 union all select 7,8 union all select 8,9 union all select 9,10 union all select 10,11 union all select 11,12 union all select 12,13 union all select 13,14 union all select 14,15 union all select 15,16 union all select 16,17 union all select 17,18 union all select 18,19 union all select 19,20 union all select 20,21 union all select 21,22 union all select 22,23 union all select 23,24 ) aa where datediff(day,@DateTime,AccessDateTime)=0 group by right(100+a,2)+ ':00 -> '+right(100+b,2)+ ':00 

關于SQLserver 中怎么實現分組統(tǒng)計查詢問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI