求一个分类统计

林子中的老虎 2010-10-21 02:40:46
网站访问统计表
ID 页面URL 访问IP 访问时间 ……
1 www.xxx.com 192.168.1.4 2010-10-16 ……
2 www.xxx.com/shop/ 192.168.1.4 2010-10-21 ……
3 www.xxx.com 192.168.1.6 2010-10-21 ……

页面类别表
类别ID 类别名称 上级 页面URL
001 首页 (顶级) www.xxx.com
001001 商城 001(首页) www.xxx.com/shop/

我想要的结果是
页面名称 访问次数
首页 2
商城 1
最好可以按时间统计
...全文
69 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
那统计网站的访问量还有没有其他好的办法啊
要统计到网站的栏目
回复
claro 2010-10-21
create table a --网站访问统计表
(ID int,页面URL varchar(60),访问IP varchar(20),访问时间 varchar(20))
go
insert into a
select 1,'www.xxx.com','192.168.1.4','2010-10-16' union all
select 2,'www.xxx.com/shop/','192.168.1.4','2010-10-21' union all
select 3,'www.xxx.com','192.168.1.6','2010-10-21'

create table b --页面类别表
(类别ID varchar(20),类别名称 varchar(20),上级 varchar(20),页面URL varchar(60))
go
insert into b
select '001','首页','(顶级)','www.xxx.com' union all
select '001001','商城','001(首页)','www.xxx.com/shop/'

select 类别名称,count(访问IP)
from a
join b on a.页面URL =b .页面URL
--where left(访问时间,7)='2010-10' --添加时间判断 ,选择2010年10月
group by 类别名称

--result:
类别名称
-------------------- -----------
商城 1
首页 2

(2 行受影响)


--drop table a,b

回复
SQLCenter 2010-10-21
--> 测试数据:#1
if object_id('tempdb.dbo.#1') is not null drop table #1
create table #1(ID int, 页面URL varchar(17), 访问IP varchar(11), 访问时间 datetime)
insert into #1
select 1, 'www.xxx.com', '192.168.1.4', '2010-10-16' union all
select 2, 'www.xxx.com/shop/', '192.168.1.4', '2010-10-21' union all
select 3, 'www.xxx.com', '192.168.1.6', '2010-10-21'
--> 测试数据:#2
if object_id('tempdb.dbo.#2') is not null drop table #2
create table #2(类别ID varchar(8), 类别名称 varchar(8), 上级 varchar(9), 页面URL varchar(17))
insert into #2
select '001', '首页', '(顶级)', 'www.xxx.com' union all
select '001001', '商城', '001(首页)', 'www.xxx.com/shop/'

select b.类别名称, count(1) 访问次数 from #1 a join #2 b on a.页面URL=b.页面URL
--where a.访问时间 ?
group by b.类别名称

/*
类别名称 访问次数
-------- -----------
商城 1
首页 2
*/
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-21 02:40
社区公告
暂无公告