最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQLserver 實現(xiàn)分組統(tǒng)計查詢(按月、小時分組)

 更新時間:2009年06月05日 23:38:13   作者:  
首先創(chuàng)建數(shù)據(jù)表IP地址,訪問時間和訪問次數(shù)。如果每訪問一次就插入一條記錄,那么AccessCount可以不要,查詢時使用count就可以了,這樣當(dāng)訪問量很大的時候會對數(shù)據(jù)庫造成很大壓力。

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

復(fù)制代碼 代碼如下:

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

該表在這兒只是演示使用,所以只提供了最基本的字段
現(xiàn)在往表中插入幾條記錄
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 根據(jù)年來查詢,以月為時間單位
通常情況下一個簡單的分組就能搞定
復(fù)制代碼 代碼如下:

select
convert(varchar(7),AccessDateTime,120) as Date,
sum(AccessCount) as [Count]
from
Counter
group by
convert(varchar(7),AccessDateTime,120)

像這樣分組后沒有記錄的月份不會顯示,如下:

這當(dāng)然不是我們想要的,所以得換一種思路來實現(xiàn),如下:
復(fù)制代碼 代碼如下:

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

查詢結(jié)果如下:

2 根據(jù)天來查詢,以小時為單位。這個和上面的類似,代碼如下:
復(fù)制代碼 代碼如下:

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 '

查詢結(jié)果如下圖:

相關(guān)文章

最新評論

那曲县| 衡水市| 德钦县| 二手房| 会同县| 元阳县| 全椒县| 耒阳市| 称多县| 河曲县| 高邮市| 池州市| 浠水县| 汨罗市| 民县| 凤山县| 宁远县| 华坪县| 申扎县| 徐水县| 阿拉善右旗| 龙游县| 兰考县| 汪清县| 陵川县| 元朗区| 云南省| 多伦县| 白玉县| 栖霞市| 崇明县| 台中县| 马公市| 平果县| 杭州市| 新兴县| 滦平县| 闵行区| 资中县| 当涂县| 毕节市|