50分求一个SQL 语句.. 对大侠们来说不难. 顶也有分!!!!!!!

jim.ma 2003-12-22 10:41:57
一个表
表名IpLog
字段:ID | NAME | IP | DATEANDTIME

想得到的查询结果是

同一个IP 在一分钟内 访问 相同 NAME 超过60 次的 IP

NAME 可重复 IP 可重复 DATEANDTIME 为GETDATE()

ID 自增 但可以不考虑.

不知道用group by 该怎么写:(
...全文
121 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jim.ma 2003-12-23
  • 打赏
  • 举报
回复
啊 ? 还要用存储过程呀~~
ilqtj 2003-12-23
  • 打赏
  • 举报
回复
上面的错了
declare cursor_insert cursor for select distinct DATEANDTIME from iplog
declare @@i datetime
open cursor_insert
fetch cursor_insert into @@i
while @@fetch_status=0
begin
fetch cursor_insert into @@i
select ip,name from iplog where DATEDIFF(second, DATEANDTIME,@@i)<1 group by ip,name having count(*)>60
end
close cursor_insert
deallocate cursor_insert
fatcat_xp 2003-12-23
  • 打赏
  • 举报
回复
顶 学习
61 2003-12-23
  • 打赏
  • 举报
回复
SELECT DISTINCT Ip
FROM (SELECT B.name, B.Ip, A.datetime, COUNT(B.Id) AS num
FROM IPLog A INNER JOIN
IPLog B ON A.Id <> B.Id AND A.name = B.name AND A.Ip = B.Ip AND
DATEDIFF(S, A.datetime, B.datetime) < 60 AND
A.datetime < B.datetime
GROUP BY B.Ip, B.name, A.datetime) c
WHERE (num >60)
klan 2003-12-23
  • 打赏
  • 举报
回复
try this:

select A.ip, A.[Name] from
(select [Name],ip
from IpLog
where abs(datediff(mi,getdate(),DATEANDTIME))=1 or abs(datediff(mi,DATEANDTIME,getdate()))=1) A
group by A.ip, A.[Name] having count(*)>60
redstorm11 2003-12-23
  • 打赏
  • 举报
回复
up
qhdsnow 2003-12-23
  • 打赏
  • 举报
回复
这个用建立表关联方法很好做。你查相关书籍上都有,这是基础。
clq991 2003-12-23
  • 打赏
  • 举报
回复
up
paz 2003-12-23
  • 打赏
  • 举报
回复
up~~~
iamsangster 2003-12-23
  • 打赏
  • 举报
回复
up
hnjava 2003-12-23
  • 打赏
  • 举报
回复
顶!学习中
shijian58 2003-12-23
  • 打赏
  • 举报
回复
帮你顶,记着给分
monkeys 2003-12-23
  • 打赏
  • 举报
回复
用存储过程速度快些

在数据量多的时候,你就会身有体会的
ilqtj 2003-12-23
  • 打赏
  • 举报
回复
vbs:
要不你select distinct DATEANDTIME from iplog:找出所有不同的登陆时间
让后循环查询
do while not rsdistinct.eof
select ip,name,count(*) as ipcount from iplog where DATEDIFF(second, DATEANDTIME,上面的DATEANDTIME)<1 group by ip,name having count(*)>60
response.write "ip地址:" & rsdistinct(ip) & ",姓名:" & rsdistinct(name) & ",登陆次数:" & & rsdistinct(ipcount)
rsdistinct.movenext
loop
ilqtj 2003-12-22
  • 打赏
  • 举报
回复
select ip,name from iplog where DATEDIFF(second, DATEANDTIME,(select distinct DATEANDTIME from iplog))<1 group by ip,name having count(*)>60


lint 2003-12-22
  • 打赏
  • 举报
回复
oracle:
select to_char(DATEANDTIME,'yyyymmddhh24mi'), ip,name,count(*) from iplog group by to_char(DATEANDTIME,'yyyymmddhh24mi'),ip,name
having count(*)>60
sqlserver中把to_char用convert函数改写就可以了,参数参考帮助,。
xbstly 2003-12-22
  • 打赏
  • 举报
回复
bu hui
aojiankd 2003-12-22
  • 打赏
  • 举报
回复
不会,帮你顶

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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