设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1830|回复: 7
打印 上一主题 下一主题

[查询] 关于一个统计个数的查询问题

[复制链接]
跳转到指定楼层
1#
发表于 2012-9-23 19:58:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位高手,有以下一个表怎么统计一个时间段每个故障发生的次数,关键问题是相同故障5分钟以内重复出现只记一次,希望高手指教,非常感谢!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2012-9-23 19:59:58 | 只看该作者
忘了放数据样式

时间                     故障名称
2012-9-10 12:00        aaaa
2012-9-10 12:01        aaaa
2012-9-10 12:01        aaaa
2012-9-10 13:02        asvds
2012-9-11 14:02        vvv
2012-9-12 14:02        vvv
2012-9-13 15:02        few
2012-9-14 16:02        dq
2012-9-15 17:02        aaaa
3#
 楼主| 发表于 2012-9-23 20:39:11 | 只看该作者
顶起来,不能沉下去
4#
发表于 2012-9-24 00:03:09 | 只看该作者
本帖最后由 roych 于 2012-9-24 00:26 编辑

这个估计得需要ADO。。。(注意,第一个查询,也就是“时间查询”不能分类汇总,否则ADO自定义查询函数就白用了)貌似多定义了一个Date2~~~
  1. Function getValue(MyDate As Date) As Long
  2. Dim rst As New ADODB.Recordset
  3. Dim i As Long, s As Long
  4. Dim date1 As Date, date2 As Date
  5. Dim MyItem As String
  6. '注意,记录集排序很重要。
  7. rst.Open "select * from sheet1 order by 故障名称", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  8. date1 = rst(1)
  9. MyItem = rst(2)
  10. For i = 1 To rst.RecordCount
  11. '判断第一个时间值和当前时间之差是否在5分钟内
  12.     If DateDiff("n", MyDate, rst(1)) <= 5 Then
  13. '如果是同一个故障,则开始计数
  14.         If rst(2) = MyItem Then
  15.             s = s + 1
  16.         Else
  17. '否则就更新故障名称再计数。需要注意的是,这部分会将前面已经计数的进行累计。
  18.             MyItem = rst(2)
  19.             s = s + 1
  20.         End If
  21.     End If
  22.     rst.MoveNext
  23. Next
  24. getValue = s
  25. rst.Close
  26. End Function
复制代码

在这里我还是说两句题外话吧:
1、周末的帖子可能不会马上得到回复的,请您耐心些许。如果周一以后仍未有回复的话,再顶起或者重新发帖。——事实上我一般更喜欢看新发表的帖子。
2、发帖时尽可能把问题说清楚,必要的话,请上传实例附件。毕竟不是谁都有时间就您的问题来做一个例子的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5#
发表于 2012-9-24 09:44:55 | 只看该作者
时间段怎么划分;5分钟如何界定,楼主都没说清楚
6#
发表于 2012-9-24 21:32:16 | 只看该作者
djt 发表于 2012-9-24 09:44
时间段怎么划分;5分钟如何界定,楼主都没说清楚

这里以第一条记录开始,符合5分钟内的算第一条;超过第一条记录5分钟的算新记录,重新计算以新纪录为基准的5分钟内的记录。
7#
 楼主| 发表于 2012-9-24 22:10:40 | 只看该作者
roych 发表于 2012-9-24 00:03
这个估计得需要ADO。。。(注意,第一个查询,也就是“时间查询”不能分类汇总,否则ADO自定义查询函数就白 ...

非常感谢,下次注意,呵呵,现在去验证一下,多谢
8#
 楼主| 发表于 2012-9-24 22:11:57 | 只看该作者
roych 发表于 2012-9-24 21:32
这里以第一条记录开始,符合5分钟内的算第一条;超过第一条记录5分钟的算新记录,重新计算以新纪录为基准 ...

roych说的非常正确,就是我要表达的意思,下次一定把问题写清楚并附上源文件,再次感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-22 17:56 , Processed in 0.098399 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表