解决方案 »
- (老问题)索引实现机制是什么?
- toad如何导出序列,触发器,存储过程
- DB2问题:求教sql语句like的用法?
- 请教高人,oracle的行数据替换操作。。。。(没有悬赏分了,请大家帮帮忙,谢谢)
- 各位国庆快乐! 同时请问关于一条多表更新的效率问题?
- 再PL/SQL中,能否再出现异常后,处理相应的异常,然后程序继续运行后面的代码吗?我在编成中发现,只要已发生一个异常,程序就全部结束了
- ★ 高分求解:触发器问题. ★
- 小弟初学oracle,在win2000下装好后,启动Enterprise Manager,连接时总是说“没有监听器”是怎么会是??
- 我的备库做完了,但是归档为 :Current log sequence 0
- cheak语句哪儿错了?
- ORACLE在处理大表时会出现MYSQL这样的问题吗?极慢,且占用大量的暂时磁盘空间。
- 触发器
如果很多,用SQL直接实现的话运行会很慢。
如果有多表,表之间如何关联?
发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
(select websiteId,count(1) from table where to_char(sysdate,'yyyymmdd')=to_char(visit_startTime,'yyyymmdd') group by sourceurl,client_squence,single_ip) a1
--昨天
left join (select websiteId,count(1) from table where to_char(sysdate-1,'yyyymmdd')=to_char(visit_startTime,'yyyymmdd') group by sourceurl,client_squence,single_ip) a2
算是给你一个例子吧。最近开始折腾ORACLE,发现对oracle懂得有点少,但是SQL就没有啥问题了
create table urlinfo
(
id int, /*网站id*/
weburl varchar(20) /*网站名称*/
)
insert into test1 select 3801,'网站1'
insert into test1 select 3802,'网站2'
/*网站来路信息表*/
create table sourceinfo
(
id int, /*id主键*/
source_url varchar(20), /*来源url*/
visit_url varchar(20), /*访问url*/
visit_start_time datetime, /*访问开始时间*/
visit_end_time datetime, /*访问结束时间*/
visit_domain_name varchar(20),/*访问url域名*/
client_squence varchar(20),/*客户端序列*/
website_id varchar(20),/*网站id,外键*/
source_domain_name varchar(20),/*来源url域名*/
visit_time varchar(20),/*访问时长*/
single_ip varchar(20) /*独立ip*/
)
insert into sourceinfo
select 1,'www.baidu.com/aa','www.aaa.com/aa','2011-03-12 12:25:45','2011-03-12 12:35:45','www.aaa.com','qerrewqpoe1',3801,'www.baidu.com','10','192.168.10.21'
insert into sourceinfo
select 2,'www.gougou.com/aa','www.bbb.com/aa','2011-03-12 12:25:45','2011-03-12 12:35:45','www.bbb.com','qerrewqpoe1',3802,'www.gougou.com','10','192.168.10.22'
/*
要得到这样的报表:
weburl 今天 今天 今天 今天 昨天 昨天 昨天 昨天 本周....(一次类推)
网站1 pv量 uv独立访客访问量 独立ip访问量 绝对唯一访客访问量 pv量 uv独立访客访问量 独立ip访问量 绝对唯一访客访问量
网站1 pv量 uv独立访客访问量 独立ip访问量 绝对唯一访客访问量 pv量 uv独立访客访问量 独立ip访问量 绝对唯一访客访问量
*/
今天、昨天、本周、上周、本月、上月、本年、上年的(根据访问时间)你如果只是按照这个要求的话,并不需要像昨天,7天前止痒的诗句的话,直接使用group by 进行分组统计就可以了。统计的时候,只是对visit_start_time进行分别的格式化就可以了。select to_char(sysdate,'w') from table where rownum<1;--当前是第几周select to_char(sysdate,'mm') from table where rownum<1;--当前是第几月select to_char(sysdate,'yyyy') from table where rownum<1;--当前是第几年
--当天
select VISIT_DOMAIN_NAME,to_char(VISIT_START_TIME,'yyyymmdd'),count(1) from SOURCEINFO where to_char(sysdate-7,'yyymmdd')=to_char(VISIT_START_TIME,'yyymmdd') group by VISIT_DOMAIN_NAME,to_char(VISIT_START_TIME,'yyyymmdd') ;--本周select VISIT_DOMAIN_NAME,to_char(VISIT_START_TIME,'ww'),count(1) from SOURCEINFO where to_char(sysdate,'yyyyww')=to_char(VISIT_START_TIME,'yyyyww') group by VISIT_DOMAIN_NAME,to_char(VISIT_START_TIME,'ww');--上周
select VISIT_DOMAIN_NAME,to_char(VISIT_START_TIME,'ww'),count(1) from SOURCEINFO where to_char(sysdate-7,'yyyyww')=to_char(VISIT_START_TIME,'yyyyww') group by VISIT_DOMAIN_NAME,to_char(VISIT_START_TIME,'ww');这几个个是PV量。当然你可以适当的修改点内容。其他的只需要修改相应的group by 内容就可以了。
你如果每天都进行适当的统计,那么,周结和月结、粘结,也可以都省略掉。省略掉的内容,从哪里来呢?我们新建一个表:CREATE TABLE Source_Count
(
WEBURL VARCHAR2(20 BYTE),
count_date VARCHAR(8 BYTE),
pv int,--pv量
ip int,--Ip访问量
uv int,--Uv独立访客访问量
sc int--绝对唯一访客访问量
)这个表用来保存历史访问量。详情的话,咱们换是存在之前的表中。每天23:59分,你可以做一个写入此表的计划任务,把前一天的数据写入到这个表中之后你取的时候就容易多了,直接用WEBURL去取相应的统计就可以了。方法和我之前发的SQL一样。