有这样一个表,里面有员工的工作时间,时间的计算方式是以分钟为单位,比如张三今天工作了3.20个小时,昨天工作了5.30个小时,而且每个月的每天都是以这样的方式工作的。如何计算他在一个月内工作的总时间?求各位大侠赐教!!!!谢谢 
mysql数据库

解决方案 »

  1.   

    select 员工编号,sum(每天工作时间) from tb group by 员工编号
      

  2.   

    select 员工姓名,sum(每天工作时间)
    from table
    where 员工姓名='张三'
    group by 员工姓名
      

  3.   

    能说 清楚点吗?这个字段的类型是time类型吗?
      

  4.   

    从你的提问来看,它不是时间类型的,而是数值类型的.今天3.20,明天5.30,显然应该用 decimal(10,2)之类的数据类型来表示,因此可以用sum()进行统计.
      

  5.   

    你把时间换算成分钟,最后用 / 除 60 是小时数,余数即%后的是分钟,当然有可能到月天等,天就 /3600 了用sum()后的值去做。
      

  6.   

    这个是用代码实现的,而且不是很人性化,我想问sql语句里面有没有直接的计算方法
      

  7.   

    create table tb(col decimal(10,2))insert tb select 3.20
    insert tb select 5.30
    insert tb select 2.20
    select sum(col),
    cast(
    ltrim(sum(isnull(cast(PARSENAME(col, 2) AS int),0))
    +sum(isnull(cast(PARSENAME(col,1) AS int),0))/60)
    +'.'+ltrim(sum(isnull(cast(PARSENAME(col,1) AS int),0))%60) as decimal(10,2))
    from tb /*
    ---------------------------------------- ------------ 
    10.70                                    11.10(所影响的行数为 1 行)
    */
      

  8.   

    select replace(convert(varchar(5),getdate(),108),':','小时')+'分'
    /*
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    19小时36分(1 行受影响)*/
      

  9.   

    create table tb(time decimal(10,2))
    insert into tb select 3.20
    union all select 4.18
    union all select 2.45
    go
    --运算:取整数部分和小数部分分别求和,小数部分的和除以60再取整后与前面和相加得到小时数,小数部分求和后取余60得未进位分钟数
    select (sum(floor(time))+floor(sum(time%1*100)/60))*1.00+sum(time%1*100)%60/100 from tb
    /*
    ---------------------------------------
    10.23(1 行受影响)*/
    go
    drop table tb
      

  10.   

    或者:
    create table tb(time decimal(10,2))
    insert into tb select 3.20
    union all select 4.18
    union all select 2.45
    go
    --获得精确的小时数,小数部分是小时,不是分
    select sum(floor(time)+(time%1)/60*100) from tb
    /*
    ---------------------------------------
    10.383300(1 行受影响)*/
    go
    drop table tb
      

  11.   

    select sum(floor(time))+floor(sum(time%1*100)/60) +(sum(time%1*100)%60)/100 from tb;
      

  12.   

    你上面的这个方法是可以的,在SQL中可以加入算术。