| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
免费IT实战开发视频教程合集分享千里之行 始于足下
共有 342 人关注过本帖
标题:请教,怎样求出记录的最大间隔?
只看楼主 加入收藏
fengmh
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-3-18
结帖率:83.33%
  已结贴   问题点数:20  回复次数:16   
请教,怎样求出记录的最大间隔?
1个表,2个字段:时间,商品名称,如下表,我想求出商品名称中每种商品的最大进货时间间隔,先谢谢了.

时间      商品名称
1月2日    铅笔
1月3日    橡皮
1月4日    小刀
1月5日    橡皮
1月7日    橡皮
1月8日    小刀
1月9日    铅笔
1月10日   小刀
1月11日   铅笔
1月12日   橡皮
按照上例,铅笔的最大时间间隔是7天,橡皮的最大时间间隔是5天。
2018-11-08 15:56
sdta
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:170
帖 子:7402
专家分:17490
注 册:2012-2-5
  得分:0 
楼主这是看图写代码啊

坚守VFP最后的阵地
2018-11-08 18:15
sdta
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:170
帖 子:7402
专家分:17490
注 册:2012-2-5
  得分:0 
思路:
按商品名称分组,最大日期-最小日期

坚守VFP最后的阵地
2018-11-08 18:16
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:20
帖 子:604
专家分:1159
注 册:2009-3-1
  得分:0 
以下是引用sdta在2018-11-8 18:16:58的发言:

思路:
按商品名称分组,最大日期-最小日期

铅笔,2号,9号,11号,最大间隔为7天,若最大减最小11-2=9天了,不符楼主的要求了
2018-11-08 18:26
sdta
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:170
帖 子:7402
专家分:17490
注 册:2012-2-5
  得分:0 
按商品名称排序,相同商品名称的日期相减,然后取得最大间隔日期

坚守VFP最后的阵地
2018-11-08 20:10
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:86
帖 子:2576
专家分:6316
注 册:2015-3-25
  得分:10 
*!* 建立测试数据
SET DATE YMD
SET CENTURY ON
create cursor 进货(时间 d,名称 c(20))
insert into 进货(时间,名称) values({^2018-1-2},"铅笔")
insert into 进货(时间,名称) values({^2018-1-3},"橡皮")
insert into 进货(时间,名称) values({^2018-1-4},"小刀")
insert into 进货(时间,名称) values({^2018-1-5},"橡皮")
insert into 进货(时间,名称) values({^2018-1-7},"橡皮")
insert into 进货(时间,名称) values({^2018-1-8},"小刀")
insert into 进货(时间,名称) values({^2018-1-9},"铅笔")
insert into 进货(时间,名称) values({^2018-1-10},"小刀")
insert into 进货(时间,名称) values({^2018-1-11},"铅笔")
insert into 进货(时间,名称) values({^2018-1-12},"橡皮")
*!* 查询
SELECT 名称,MAX(间隔) as 间隔 FROM (SELECT t1.*,NVL(t1.时间-(SELECT MAX(时间) FROM 进货 WHERE 名称=t1.名称 AND 时间 < t1.时间),0) as 间隔 FROM 进货 as t1) t2 ;
GROUP BY 名称 INTO CURSOR tmp进货
BROWSE


[此贴子已经被作者于2018-11-8 20:43编辑过]

附件: 您没有浏览附件的权限,请 登录注册
2018-11-08 20:41
fengmh
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-3-18
  得分:0 
回复 6楼 mywisdom88
老师,查询语句为什么显示语法错误?
2018-11-09 09:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:163
帖 子:6329
专家分:27684
注 册:2014-5-20
  得分:0 
也可以先按 商品名称+时间 排序再扫描一次就可以分别获取相同名称的时间间隔最大值。
2018-11-09 10:45
liuxingang28
Rank: 10Rank: 10Rank: 10
来 自:山东济南
等 级:贵宾
威 望:38
帖 子:610
专家分:1994
注 册:2014-2-7
  得分:10 
SQL语句有点高深,俺采用的是笨办法:

select * from 进货 into cursor temp order by 名称,时间
sele temp
go top
do while !eof()
    cName = 名称
    dDate = 时间
    nDay = 0
    scan rest while 名称 = m.cName
        if 时间 - dDate > dDay
            nDay = 时间 - dDate
        endif
        dDate = 时间
    endscan
    ? cName,dDay
enddo

泉城飞狐
2018-11-10 11:01
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:86
帖 子:2576
专家分:6316
注 册:2015-3-25
  得分:0 
以下是引用fengmh在2018-11-9 09:05:49的发言:

老师,查询语句为什么显示语法错误?

VFP9测试正常,同时,注意分行 ;
SELECT 名称,MAX(间隔) as 间隔 FROM ;
 (SELECT t1.*,NVL(t1.时间-(SELECT MAX(时间) FROM 进货 WHERE 名称=t1.名称 AND 时间 < t1.时间),0) as 间隔 FROM 进货 as t1) t2 ;
 GROUP BY 名称 INTO CURSOR tmp进货
brow

[此贴子已经被作者于2018-11-11 11:56编辑过]

2018-11-11 11:53







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040213 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved