关于sql的一个麻烦问题,请关注! (100分)

  • 主题发起人 主题发起人 硬木花椒
  • 开始时间 开始时间

硬木花椒

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个表
司机 行车公里数 行车时间(为tdatetimestamp类型) 是否早晚班(布尔) 是否节假日(布尔)
现在我想统计出其中的信息,存入下面的表:
司机 年 月 行车公里数 节假日个数 早晚班个数
另外说明一点,这两个表我写出的是部分字段,其他没有多大用处。
节假日和早晚班可以重叠,第一个表中记录了所有的出车纪录,第二表就是要统计每个
司机在每年每月的行车公里数,节假日出车个数,早晚班出车个数。
请问具体怎样实现呀?
实现代码越简洁越好。
 
你的表结构改为如下:
司机 行车公里数 行车时间 早班 晚班 节假日 非节假日
统计时 select sum(行车公里数) as 行车公里数 ,sum(早班) as 早班,sum(晚班) as 晚班,sum(节假日) as 节假日,sum(非节假日) as 非节假日
from table1
where 司机=:司机 and 行车时间=:行车时间
是最简单的
 
select 司机,
year(行车时间) as 年,
month(行车时间) as 月,
sum(行车公里数) as 行车公里数 ,
sum(是否节假日) as 节假日个数,
sum(是否早晚班) as 早晚班个数
from table
group by 司机, year(行车时间),month(行车时间)
 
补充一下,否=0,是=1
另若一天多次出车就比较麻烦了
 
似乎你的这个表述不够清晰。
比如:就dopro先生所求出来的节假日并没有与早晚班相对应起来,这个数据似乎没有
实用价值。
 
是否节假日是boolean型呀,sum(是否节假日)得到的数是节假日出车几次吗?可以分开查呀
select sum(行车公里数)as 行车公里数 from table where (司机=司机)and
(行车时间>=:时间1 and 行车时间<=时间2)
select count(*) 节假日出车时间 from table where (司机=司机)and
(行车时间>=:时间1 and 行车时间<=时间2) and (是否节假日=true)
是否早晚班也是一样的吧.再做个临时表把数据存起来,要打印也好,通DBgrid显示也可以呀
 
同意:zhanzehua
select 司机,
year(行车时间) as 年,
month(行车时间) as 月,
sum(行车公里数) as 行车公里数 ,
sum(是否节假日) as 节假日个数,
sum(是否早晚班) as 早晚班个数
from table
group by 司机, year(行车时间),month(行车时间)
 
>>>dopro,nb_qiahobo
有一个问题是,时间不确定呀,我只是对出车的纪录进行统计,我并不知道里面的出车时间
有哪些呀。
比如有3/23/2001 13:21:00, 4/2/1999 12:32:00 等,所以我很难用
(行车时间>=:时间1 and 行车时间<=时间2) 这种格式呀。
>>>zhanzehua,zhongtu
不行啊,我用你们的语句试一下,出现错误;然后我改
year(行车时间) as 年 为 extract (year from 行车时间) as 年
错误为类型不匹配。
行车时间 的类型是timestamp,为什么不行呀?
 
你的行车时间存的是什么时间,是否是早晚班你怎么知道,是否是节假你怎么懂,
如果你每次都懂以上内容,你就可以使用我的数据库表来统计。
例如某个司机上早班假日,记录存为:
李司机,120,2002/5/1,1,0,1,0
 
其实行车时间应该是发车时间,或者说出车时间;
另外说明的是,第一个表的数据是已经存在的,我要做的就是把这些行车信息统计到第二个表。
 
如果你的表结构不能更改的话,不可能只要一个Sql语句来完成你的统计工作,必须写一
段程序才能实现。
 
好像boolean型的字段不能用sum 和 count,year 和 month 从timestamp中提取的时候
也出错,哪位帮帮我呀,55555
拜托啦,多谢啦
 
多人接受答案了。
 
后退
顶部