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

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

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

設(shè)置AccessCount字段可以根據(jù)需求在特定的時(shí)間范圍內(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ù)年來查詢,以月為時(shí)間單位
通常情況下一個(gè)簡(jiǎn)單的分組就能搞定
復(fù)制代碼 代碼如下:

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

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

這當(dāng)然不是我們想要的,所以得換一種思路來實(shí)現(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ù)天來查詢,以小時(shí)為單位。這個(gè)和上面的類似,代碼如下:
復(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)文章

最新評(píng)論

祁连县| 延庆县| 左云县| 南和县| 荥经县| 二手房| 涿鹿县| 明水县| 福建省| 莒南县| 兴业县| 常德市| 北流市| 西峡县| 井研县| 时尚| 西乌珠穆沁旗| 达州市| 宁陵县| 沭阳县| 山东| 安龙县| 绿春县| 恩平市| 枞阳县| 乳源| 都江堰市| 平塘县| 双牌县| 新密市| 山东省| 喀喇沁旗| 乌拉特中旗| 车致| 田林县| 霍州市| 咸宁市| 山西省| 贵定县| 河南省| 旬阳县|