select * from table1 where selldate> :D1 and selldate < :d2
query1.Params[0].AsDateTime:=StrtoDateTime('2002-05-28 19:00:00');
query1.Params[0].AsDateTime:=StrtoDateTime('2002-05-28 19:10:00');
query1.Params[0].AsDateTime:=StrtoDateTime('2002-05-28 19:00:00');
query1.Params[0].AsDateTime:=StrtoDateTime('2002-05-28 19:10:00');
表结构都没有,楼上的都帮你做出来的?pfpf :-)
STR({fn HOUR(时间)},2)+':'+STR({fn MINUTE(时间)}/10*10, 2)+ '-'
+STR({fn HOUR(时间)},2)+':'+ STR({fn MINUTE(时间)}/10*10,2) AS 时间段,
sum(销售数) AS 销售的商品总数,
avg(jg) as 平均价格
from theTable
where WHERE (DATEDIFF(day, 时间, Now()) = 0)
Group by STR({fn HOUR(时间)},2)+':'+STR({fn MINUTE(时间)}/10*10, 2)+ '-'
+STR({fn HOUR(时间)},2)+':'+ STR({fn MINUTE(时间)}/10*10,2) AS 时间段DBMS:SQL Server
begin
close;sql.clear;
sql.add('select sum(sl), sum(jg)/sum(sl)
from table1 where selldate> :D1 and selldate < :D2');
fieldbyname('D1').AsDateTime:=StrtoDateTime('2002-05-28 19:00:00');
fieldbyname('D2').AsDateTime:=StrtoDateTime('2002-05-28 19:10:00');
open;
end;
1.求出销售时间的分钟数,如9:05的分钟数为545;
2.将上述分钟数除以10(时间间隔),并取整;
例:9:05、9:09经过前两步得到的数字均为54了,即分组54表示时间段
9:00<=saletime<9:10,54可与时间段起始时间9:00相互转换;
3.用前两步的结果分组统计。Oracle中应该是,(供参考)
Select round((To_Char(saletime,'hh24')*60+To_Char(saletime,'mm'))/10) AS 时间段,Sum(销售的商品数) AS 销售的商品总数, Sum(销售的商 品数)/10 AS 平均价格
from TableName
group by round((To_Char(saletime,'hh24')*60+To_Char(saletime,'mm'))/10)
改为
sql.add('select sum(sl), avg(jg)
1. 用存储过程;
2. 先建一张临时表,然后用总的时间段查询记录,
Select <销售时间字段>, <销售数目字段>, <销售价格字段>
From <日志表>
Where (<销售时间字段> >= :Time1) and (<销售时间字段> < :Time2)
Order By <销售时间字段>
// 循环写入临时表
// ... ...
时间段
1:00-1:10
1:10-1:20
1:20-1:30
如果没有 ,你还要先建一个这样的字段,再查询 plainsong(轻风) 的写的比较好
你们可能理解错意思,我不是统计一个时间短
我是在一个大的时间段,分为若干个小的时间短,把他们求和,平均然后归组显示
他帮我创建了一个这样的字段,他完全理解了我的意思,
等我试了以后来结贴