ASP和Access数据库的<“连续”且“相同”数值出现次数最多>的问题-----急!有请教过高手,不过还是让大家看看有更好的办法吗?

zhengjibin 2005-10-07 05:16:51

若友 14:44:56
我想请教的问题是:怎么样求出一个变量中连续出现相同值的最大次数。比如:一个数据表中有一个字段叫做“平均温度”;然后每天都有相应的一个数值输入。假如输了365天后,那么这个表的“平均温度”字段就有365个数值。比如:1月1日是25度,1月2日也是25度,1月3号是26度。。。。。
若友 14:46:41
然后这365个数值有一些“连续”而且“相同”的。我想要写个程序计算这些“连续”而且“相同”的数值出现的最大次数。
若友 14:47:11
不知怎么写,用什么方法写比较好。请老大给个提示。谢谢!

若友 14:48:59
假设这365个数值中。。。。25度“连续”出现15次,28度“连续”出现28次----这个是出现最多次的话。那么这个程序的返回值就是28.
嘻哈呵嘿 14:51:27
用什么写?
若友 14:51:23
ASP
若友 14:51:35
这个问题难吗?老大
嘻哈呵嘿 14:52:05
没什么。。应该用存储过程写比较好吧。
若友 14:52:41
可问题是数据库是ACCESS的

若友 14:53:08
ACCESS的数据库能写存储过程吗?

嘻哈呵嘿 14:53:56
能。但只能写一句SQL
若友 14:54:07
会不会很难写啊?
嘻哈呵嘿 14:55:46
遍历吧。我现在也只想到这个笨办法。
若友 14:56:04
网上有类似解决这个问题的方法吗?
嘻哈呵嘿 14:56:59
没看到。
若友 14:57:10
老大,你有遇过这样的问题吗?
嘻哈呵嘿 14:58:18
没有啊。
嘻哈呵嘿 14:59:19
遍历就好了啊。
嘻哈呵嘿 14:59:39
select dinstince columnName from tableName where columnName=columnValue
嘻哈呵嘿 15:00:00
select count(*) from tableName where columnName = columnValue
若友 15:00:31
这两名就行了吗?
若友 15:01:41
这两句就行了吗?能具体点吗?
嘻哈呵嘿 15:02:27
第一句先把唯一的值取出来。
嘻哈呵嘿 15:02:37
每二句把每个值的出现次数取出来
嘻哈呵嘿 15:02:40
比较一下就行了。
若友 15:03:52
为什么要把唯一的值取出来呢?第二句我感觉比较有理。
若友 15:07:31
老大,重要的一点是:要“连续”而且“相同”:而不只是“相同”的数值出现的次数

嘻哈呵嘿 15:09:30
要连续?
若友 15:09:16
老大,上面那两句能计算出现“连续”而且“相同”的数值的最大次数吗?



若友 15:09:22
是的。
嘻哈呵嘿 15:10:28
那就比较复杂了
若友 15:10:35
比如:1月1号是25度,1月2号是25度,1月3号是25度。这就是“连续”出现而且“相同”的数值25度出现了3次
嘻哈呵嘿 15:11:03
汗。
若友 15:11:12
所以啊。这个问题,我才想请教老大指点啊。。
若友 15:11:35
我现在也是想得要疯了。
若友 15:12:23
我的笨想法如下:不知老大认为可行吧?

嘻哈呵嘿 15:15:16
什么想法。
嘻哈呵嘿 15:17:24
declare @max int
declare @num int
declare @tmp int

set @max = 0

create table #tmp (ID int Not NULL)
insert into #tmp select distinct categoryID from AW_Products
while Exists(select * from #tmp)
begin
set @tmp = (select top 1 id from #tmp)
set @num = (select count(*) from AW_Products where categoryID = @tmp)
if (@num > @max)
set @max = @num
delete from #tmp where id=@tmp
end

drop table #tmp
select @max
嘻哈呵嘿 15:17:32
如果不连续的话这样就行了。
若友 15:18:43
是啊。不过是要“连续”而且“相同”啊。。。
嘻哈呵嘿 15:20:23
连续比较麻烦。
若友 15:24:55
定义两个变量:AA 与 BB ,这两个变量的初始值都为0 。然后做个do while not.eof循环比较。比如:1记录的值与2记录的“平均温度”字段的值比较,如果相同的话就让AA的值为1,BB的值也为1;如果不同的话,AA的值就为0;然后2记录的值与3记录的“平均温度”字段的值比较,如果相同的话就让AA的值为AA+1,BB的值也为AA+1;如果不同的话,AA的值就为0,“同时”再进行BB的值与AA+1的值进行比较,如果AA+1的值大于BB+1的话,那么BB的值就为AA+1,如果AA+1的值小于BB+1的话,那么BB的值还是BB+1,而且AA的值变为0;这样一直循环比较。。。。到eof为止。那么BB的值就是程序返回的“连续”而且“相同”的最大数了。不知老大认为行吗?

若友 15:34:13
老大,您看看有没有比较好的方法?

嘻哈呵嘿 15:35:07
==
若友 15:35:25
我上面的想法试了好像有问题


若友 15:37:43
老大,您说我上面的想法可行吗?

...全文
141 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengjibin 2005-10-12
  • 打赏
  • 举报
回复
等了这么久没人回复,看来没什么高手。这几天自己想想,终于把这问题解决了,感谢自己一下。。呵呵。。同时也把自己的代码发出来让大家看看。看不懂的可以问
<!--#include file= "../inc/conn3.asp "-- >
<%
dim rs
set rs=server.createobject( "adodb.recordset ")
rs.open "select * from blhc ",conn,1,3
if rs.eof then
response.write "没有记录 "
else
total=rs.recordcount
i=1
aa=0
bb=0
cc=0
dd=0
do while i <=total
aa=rs( "6s ")
i=i+1
rs.movenext
bb=rs( "6s ")
if aa=bb then
cc=cc+1
else
if aa < >bb then
if cc+1 >dd then
dd=cc+1
end if
cc=0
end if
end if
loop
end if
response.write dd'-----这个就是:指定的数据表的某个字段值的“连续”而且“相同”的极限最大出现次数
rs.close
set rs=nothing
conn.close
set conn=nothing
% >
zhengjibin 2005-10-12
  • 打赏
  • 举报
回复
等了这么久没人回复,看来没什么高手。这几天自己想想,终于把这问题解决了,感谢自己一样。。呵呵。。同时也把自己的代码发出来让大家看看。看不懂的可以问
<!--#include file="../inc/conn3.asp"-->
<%
dim rs
set rs=server.createobject("adodb.recordset")
rs.open "select * from blhc ",conn,1,3
if rs.eof then
response.write "没有记录"
else
total=rs.recordcount
i=1
aa=0
bb=0
cc=0
dd=0
do while i<=total
aa=rs("6s")
i=i+1
rs.movenext
bb=rs("6s")
if aa=bb then
cc=cc+1
else
if aa<>bb then
if cc+1>dd then
dd=cc+1
end if
cc=0
end if
end if
loop
end if
response.write dd'-----这个就是:指定的数据表的某个字段值的“连续”而且“相同”的极限最大出现次数
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
zhengjibin 2005-10-07
  • 打赏
  • 举报
回复
请各位大师帮忙一下解决办法。在下不胜感激!

28,409

社区成员

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

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