oracle sql how to write?

wyjam 2006-06-11 11:26:41
要求:
三张表,DATA,CRO,DIR.
create table DATA (
OID NUMBER not null,
RED NUMBER default 0,
CROID NUMBER default 0,
DIRID NUMBER default 0,
YDATE DATE default SYSDATE, //这个为记录对应的时间
constraint PK_DATA primary key (OID)
)
/
CREATE TABLE CRO(
OID NUMBER NOT NULL,
NAME VARCHAR(20) ,
NO NUMBER DEFAULT 0,
IP VARCHAR(20),
constraint PK_CRO primary key (OID)
)
CREATE TABLE DIR(
OID NUMBER NOT NULL,
NAME VARCHAR(20) ,
NO NUMBER DEFAULT 0,
IP VARCHAR(20),
constraint PK_DIR primary key (OID)
)

SELECT COUNT(*) AS SUM,B.NO,
B.NAME||' '||C.DIR AS NAME,
B.IP FROM DATA A,CRO B,DIR C WHERE A.CROID = B.OID AND A.DIRID = C.OID GROUP BY
B.NO,B.NAME||' '||C.DIR,B.IP
上面的这个语句可以搞出对应的分组的记录。
现在想加入一个一天中24小时对应的一个小时的记录条数。

结果如下:
NO NAME IP 2006-06-10 01:00:00(时间段的SUM)=1HOUR 2006-06-10 02:00:00(时间段的SUM)=2HOUR...
1 家 192.168.0.1 3 12 ...


...全文
220 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqwd911 2006-06-13
  • 打赏
  • 举报
回复

可以用case語句,
你的例子太多表了,關係複雜,我擧個簡單的例子你體會一下方法。

table a
id time
1 2006/06/12 12:30
1 2006/06/12 12:50
2 2006/06/12 12:30
2 2006/06/12 12:50

select
id,
sum(case when (to_char(time,'hh24:mi:ss')>='00:00:00' and to_char(time,'hh24:mi:ss')<'01:00:00') then 1 else 0 end) H1,
sum(case when (to_char(time,'hh24:mi:ss')>='01:00:00' and to_char(time,'hh24:mi:ss')<'02:00:00') then 1 else 0 end) H2,
...
sum(case when (to_char(time,'hh24:mi:ss')>='23:00:00') then 1 else 0 end) H24
from a
where time >= to_date('2006/06/12','yyyy/mm/dd') and time <to_date('2006/06/12','yyyy/mm/dd')+1
group by id
sql語句中每個sum(case when ... then ... else ...end)的寫法是求每個時間段的訪問次數。而where 條件中的時間可以根據你的需求變更,如果是每天固定執行一次可以更換成sysdate
yqwd911 2006-06-12
  • 打赏
  • 举报
回复
數據庫版本是多少?是9i不?
wyjam 2006-06-12
  • 打赏
  • 举报
回复
今天一天在外面, 现在才有空上网,
对数据库是9i没错。
yqwd911 2006-06-12
  • 打赏
  • 举报
回复
有循環語句:
1)無限循環滿足條件退出
loop
sql statement;
exit when condition statement;
end loop;
2)黨滿足條件則進行循環
while condittion statement;
sql statement;
end loop;
3)For循環(可以用游標)
for i in 1..12 loop
sql statement;
end loop;

建議常用3)寫法比較簡單,應用比較靈活。

但是作爲你的統計,要實現及時,盡量做一個觸發器這樣比較好。
個人建議供參考。
wyjam 2006-06-11
  • 打赏
  • 举报
回复
自己UP一下, 顺便问一下,SQL中的存储过程 有没有循环语句?

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧