这样的统计人次怎样写?

fiter 2004-11-09 11:46:19
operate date 图书条码 部门 读者条码 操作类型
2004-9-9 18:01:12 20264552 01 K002 1 B1
2004-9-9 18:03:42:216 20264552 01 K001 1 B1
2004-9-9 18:03:55:89 20264552 01 K001 2 B1
2004-10-13 10:58:31:78 20312476 02 00006585 2 62
2004-10-14 09:59:39:233 20312260 02 00006585 2 62
2004-10-20 08:45:44:716 20313284 02 00015065 2 62
2004-11-2 16:26:06:233 20110441 02 00005538 1 54
2004-11-2 16:26:24:716 20309829 02 00005538 1 54
2004-11-4 10:37:50:67 20262044 01 K001 1
想统计人次 上面的结果应该是 6
连续发生的就按一次计算 如第二第三行算一次 最后一行算一次
...全文
312 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
select count(*) from t a
where (select min([operate date]) from t where [operate date])<a.[operate date] and 读者条码=a.读者条码) --少写点
<>(select top 1 [operate date] from t where [operate date])<a.[operate date])
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
select count(*) from t a
where (select min([operate date]) from t where [operate date])<a.[operate date])
<>(select top 1 [operate date] from t where [operate date])<a.[operate date])
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
比如记录集是这样

2004-9-9 18:01:12 20264552 01 K002 1 B1
2004-9-9 18:03:42:216 20264552 01 K001 1 B1
2004-9-9 18:03:55:89 20264552 01 K001 2 B1
2004-9-9 19:58:31:78 20312476 02 00006585 2 62
2004-9-9 20:03:55:89 20264552 01 K001 2 B1

应该统计出来是 4条,而不是3条
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
至于后面出现的K001,单独算一条

2004-10-20 08:45:44:716 20313284 02 00015065 2 62
2004-11-2 16:26:06:233 20110441 02 00005538 1 54
2004-11-2 16:26:24:716 20309829 02 00005538 1 54
2004-11-4 10:37:50:67 20262044 01 K001 1

lsxaa 2004-11-09
  • 打赏
  • 举报
回复
是在表中时间连续的记录

select * from t order by [operate date]

是这样连续出现的读者算一条

2004-9-9 18:01:12 20264552 01 K002 1 B1
2004-9-9 18:03:42:216 20264552 01 K001 1 B1
2004-9-9 18:03:55:89 20264552 01 K001 2 B1
2004-10-13 10:58:31:78 20312476 02 00006585 2 62

第二行和第三行的算一条

我是这么理解的
zjcxc 2004-11-09
  • 打赏
  • 举报
回复
楼上,按日期不重复的算一次,刚好6次

按时间排序,连续出现是怎么个连续法? 按分钟?秒?小时,还是其他?
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
不是,是按时间排序,连续出现的算一次
zjcxc 2004-11-09
  • 打赏
  • 举报
回复
--好像是日期相同的算一次,如果是的话,则这样:
select 次数=count(distinct [operate date])
from(select [operate date]=convert(char(10),[operate date],120) from 表)a
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
时间
zjcxc 2004-11-09
  • 打赏
  • 举报
回复
连续发生的判断依据是什么?
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
这样试试
select count(*)
from to1 a
where not exists(select 1
from to1 b
where b.读者条码=a.读者条码
and not exists(select 1 from to1
where [operate date]>a.[operate date]
and [operate date]<b.[operate date])
)
fiter 2004-11-09
  • 打赏
  • 举报
回复
好像对了,谢谢.
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
那个改过来了... 谢谢
不是导演李安 2004-11-09
  • 打赏
  • 举报
回复
回复人: lsxaa(小李铅笔刀) ( ) 信誉:100 2004-11-09 12:53:00 得分: 0

对不起,我是说这条,呵呵
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
回复人: lackin(虾米) ( ) 信誉:100 2004-11-09 13:10:00 得分: 0


楼上的语句好象有语法错误!



好像.....?????

那里 ?
不是导演李安 2004-11-09
  • 打赏
  • 举报
回复
楼上的语句好象有语法错误!
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
这个可以了
select count(*)
from to1 a
where not exists(select 1
from to1
where 读者条码=a.读者条码
and [operate date]=(select min([operate date])
from to1
where [operate date]>a.[operate date])
)
lsxaa 2004-11-09
  • 打赏
  • 举报
回复
我写的还是不对了......

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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