CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  语言基础/算法/系统设计

一个极其具有挑战性的问题!(1000分相送,不够再加)

楼主v2boy(大格)2004-09-02 01:43:19 在 Delphi / 语言基础/算法/系统设计 提问

一个极其具有挑战性的问题!(1000分相送,不够再加)  
   
   
  已知:有5种蛋糕,每种蛋糕每天的价格都有可能不相同,100个蛋糕店为这5种蛋糕提供价格。  
  提问:用何种方式知道某一段时间里面某种蛋糕的平均价最低的3个蛋糕店  
   
  提示:  
  可能的情况有:001号蛋糕店录入第1种蛋糕数据  
   
  蛋糕编号     价格     蛋糕店编号       时间段(按具体时间)                                 时间段(按周数)  
  001               5.2       098                     2004-8-2,2004-8-3,2004-8-6            
  002               5.3       022                     2004-9-9,2004-9-13,2004-10-6    
  001               5.7       031                                                                                             2004-8-2,2004-9-1|5,6,7  
  001               5.9       016                                                                                             2004-6-2,2004-12-1|5,6  
  001               5.2       051                     2004-7-1                                                
  004               5.0       100                     2004-8-2,2004-8-3,2004-8-6            
  001               5.2       078                                                                                             2004-1-1,2004-12-31|5,6  
  001               5.2       051                     2004-8-2,2004-8-3,2004-8-6,2004-8-7  
   
  时间短(按具体时间):就是可以录入具体某一天的时间,可以是30个日期或者更多  
  时间段(按周数)         :就是根据某一个起止日期内的所有星期数  
   
  有什么办法知道以上数据在2004-8-1到2004-9-1这段时间内谁哪三个蛋糕店提供的价格(平均价)最低呢。目前已经知道如何去做,但是执行效率极其低下。  
   
  可以重新建立表,可以添加新的字段。  
   
   
   
   
  请各位不惜赐教。  
   
  msn:   v2boy@msn.com  
  q   q:   129071 问题点数:100、回复次数:15Top

1 楼rcaicc(√(没完没了))回复于 2004-09-02 07:09:43 得分 0

呵呵~不懂了..Top

2 楼Frend(一刀)回复于 2004-09-02 08:15:43 得分 0

用查找啦。Top

3 楼windindance(风舞轻扬·白首为功名)回复于 2004-09-02 08:30:15 得分 0

首先重建表结构(或建立临时表),表结构为:  
  蛋糕编号     价格     蛋糕店编号       时间  
  其中,每一天,每种蛋糕,每个蛋糕店的价格是一条记录。  
   
  然后  
  select   top   3    
  蛋糕店编号,   avg(价格)  
  from   t    
  where   时间   between   '2004-8-1'   and   '2004-9-1'  
  group   by   蛋糕店编号  
  order   by   avg(价格)  
  你的分的确够多了,连续发了10几个帖子吧?有必要吗?Top

4 楼liufuyahong()回复于 2004-09-02 08:37:10 得分 10

create   table   cake_price  
  (  
        cake_no       varchar(3),  
        price           numeric(5,2),  
        cake_store_no   varchar(3),  
        price_date     datetime  
  )  
   
  insert   into   cake_price   values('001',5.2,'098','2004-8-2')  
  insert   into   cake_price   values('001',5.2,'098','2004-8-3')  
  insert   into   cake_price   values('001',5.2,'098','2004-8-6')  
  insert   into   cake_price   values('002',5.3,'022','2004-9-9')  
  insert   into   cake_price   values('002',5.3,'022','2004-9-13')  
  insert   into   cake_price   values('002',5.3,'022','2004-10-6')  
  insert   into   cake_price   values('001',5.7,'031','2004-8-2')  
   
   
   
  select   top   3   cake_store_no,cake_no,avg(price)   as   avg_price  
  from   cake_price    
  where   price_date>='2004-8-1'  
      and   price_date<='2004-9-1'  
  group   by   cake_store_no,  
                    cake_no  
  order   by   cake_store_no,  
                    cake_noTop

5 楼yinweixian(blackyin)回复于 2004-09-02 08:45:39 得分 0

支持楼上的   liufuyahong()Top

6 楼v2boy(大格)回复于 2004-09-02 09:31:44 得分 0

日期字段是一个时间段,或者一个时间段里面的所有星期一或者任一一个星期?  
   
  谢谢:windindance(风舞轻扬)liufuyahong()   (   )   信誉:100     的回复  
  忘记说了,表结构不能修改。否则整个系统会重做。2000多个ASP程序啊,老大们!~!  
   
  如果有10000种产品,1年365天,1000个供应商提供每天的价格。如果按照各位老大的方法(日期放一个字段),数据库里面就会有   10000X365X1000   =   3650000000    
   
  那数据库里面,光价格就有36亿条记录,估计要老板要把数据库换大型机才能跑。  
   
  而上面我说的情况是有的。  
  Top

7 楼windindance(风舞轻扬·白首为功名)回复于 2004-09-02 09:59:21 得分 90

to   v2boy:  
  用临时表或者表变量啊。  
  你不需要一次性把所有的数据全部列出,只要列出你要用到的不就可以了?  
   
  那可以用这样的方法:  
  declare   @temp   table   (编号   varchar(10),   总价格   numeric(18,2),   天数   int)  
  然后对你原始表中的每条数据进行处理,把价格加到@temp临时表中去。Top

8 楼v2boy(大格)回复于 2004-09-02 10:03:54 得分 0

时间段的日期2004-8-2,2004-8-3,2004-8-6表示这三天  
   
  周数表示:2004-8-2,2004-9-1|5,6,7         这一段时间2004-8-2到2004-9-1的所有星期5、6、日  
  Top

9 楼jiang5460(巴山夜雨)回复于 2004-09-02 10:14:37 得分 0

select   top   3    
  蛋糕店编号,   avg(价格)   from   表  
  where   时间段   between   'startdata'   and   'enddata'  
  group   by   蛋糕店编号  
  order   by   avg(价格)   DEsc  
  Top

10 楼liufuyahong()回复于 2004-09-02 12:59:11 得分 0

如果不转换原来的结构,则很难统计。  
  关于记录的问题,可以用分月或分季的方法来处理。  
  这个问题,建议最好到数据库版去问问。Top

11 楼Jeff20040819(美丽)回复于 2004-09-02 17:33:09 得分 0

学习,接分Top

12 楼v2boy(大格)回复于 2004-09-03 11:23:06 得分 0

非常感谢各位大大:基本上已经定为各位大大提供的三种意见  
   
  思路是这样的  
  1、首先,不修改目前数据表结果,新建一个表做为存放价格数据的临时表,主要是把日期格式化一下便于索引和统计  
  2、该表只能存放当天之后30天的数据记录  
  3、数据录入程序仍然按照以前的,然后在该数据录入的程序中添加一个   处理过程。(该过程:将当前价格信息格式化之后存放到刚才建立的临时表中)  
  4、查询和统计使用临时表,临时表中的小于当天的历史数据需要每天执行一个程序删除。  
   
   
  这种思路来源于  
  chump(木人)    
  http://community.csdn.net/Expert/topic/3331/3331690.xml?temp=.5929376  
   
  zjcxc(邹建)   txlicenhe(马可)    
  http://community.csdn.net/Expert/topic/3331/3331687.xml?temp=.4018824  
   
  可惜我对维度不熟悉  
   
   
   
  另外有  
  windindance(风舞轻扬)   (   )   liufuyahong()   (   )    
  http://community.csdn.net/Expert/topic/3331/3331696.xml?temp=4.078311E-02  
   
  crankfe(crank)  
  http://community.csdn.net/Expert/topic/3331/3331688.xml?temp=.3809473  
   
   
  还有一下大大的我看的不是很懂,看上去好像非常不错  
  qimini(循序渐进)   (   )   信誉:106    
  http://community.csdn.net/Expert/topic/3331/3331688.xml?temp=.3809473  
   
   
   
   
  希望大大们综合一下,最终搞个结论出来,今天结贴。综合的好的,每人1000分。其余各献计献策的都有分送。谢谢各位的支持。  
  另外,惨痛的教训就是廉价的程序员和DBA会导致系统要用数百倍的价格来补偿。  
   
  Top

13 楼leanxj(孤星)回复于 2004-09-03 11:35:03 得分 0

你让各个蛋糕店上报平均价格就可以了嘛,何必要统一收集数据来让服务器处理呢,让客户端机器也分担一些嘛,就是让客户端机器计算各蛋糕的平均价格,然后你在服务器端处理起来就快多了,这个模式很好哦!介于c/s   和b/s之间哦Top

14 楼wcmstars(wcm_stars)回复于 2004-09-03 12:22:17 得分 0

支持Top

15 楼shyghostwolf(土的掉渣)回复于 2004-09-03 12:38:01 得分 0

http://community.csdn.net/Expert/topic/3331/3331688.xml?temp=.3809473Top

相关问题

  • **********html挑战性问题,请高手相助,100分相送*************************
  • 颇具挑战性的问题,关于成员函数的函数指针--本人的C++功力不够
  • 设计在Word中使用的ocx控件的问题,有挑战性的,不够再加分
  • 挑战性问题!
  • 请教一个asp方面超技术性的问题,相信很多大侠没做过,挑战性很强!
  • 一个非常具有挑战性的界面技巧问题!恳请高手相助!
  • 一个非常具有挑战性的界面技巧问题!恳请高手相助!谢谢!
  • 挑战性的考验!!
  • 有挑战性的问题
  • 绝对有挑战性

关键词

  • date
  • 蛋糕
  • cake
  • 店
  • price
  • 时间段
  • 价格
  • 编号
  • insert
  • 时间

得分解答快速导航

  • 帖主:v2boy
  • liufuyahong
  • windindance

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo