sql 平均上班时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 平均上班时间相关的知识,希望对你有一定的参考价值。

例如,我一周出勤4天,上班时间分别为
2008-12-01 07:25:04.000,
2008-12-02 07:13:45.000,
2008-12-03 07:28:14.000,
2008-12-04 07:25:39.000,
问怎样求上班的平均时间?
当然,我要求的是用SQL语句
1楼 看不懂
2楼 结果不行
3楼 不是平均时间,是中间值,一平均变成11点多
4楼 进错门了
5楼 datetime是不能AVG的

你是没问题,可是我用的是SQL2005,不过思路我收了。谢了

参考技术A 我的做法是以秒为单位计算的:
select avg(substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 12, 2) * 3600 +
substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 15, 2) * 60 +
substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 18, 2))
from 表名 t
补充:结果哪里有问题???本回答被提问者采纳
参考技术B sql 平均上班时间
select avg(substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 12, 2) * 3600 +
substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 15, 2) * 60 +
substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 18, 2))
from 表名 t
参考技术C 我是用oracle的,oracle里面有个sysdate,表示系统时间的,可以这样写select (select avg(上班时间-sysdate) from 上班时间表 ) +
(select sysdate from dual)
from dual;
仅供参考
参考技术D 时间跟数字一样可以加减的

select avg(datetime) as avgtime
from 表
group by convert(smalldatetime,datetime,108)

注:convert(smalldatetime,datetime,108),换式成时间,不含日期
第5个回答  2009-01-04 with a as ( select cast(datediff(ss,'2009-1-1',上班时间)as float) s from 表名)
select dateadd(ss, avg(s),'2009-1-1') from a

SQL:时间维度和计算平均值

【中文标题】SQL:时间维度和计算平均值【英文标题】:SQL: Time Dimension and Calculating Averages 【发布时间】:2015-03-10 14:57:06 【问题描述】:

虽然不完全相同,但我有一个 SQL Server 2008-R2 数据库架构,看起来很像这样...

我正在努力弄清楚如何查询数据库以获取给定时间范围内产品的平均销售数量?

例如,2012 年至 2014 年间每种产品每月的平均销售量是多少。

我的主要问题是如何在平均数月内包含零数字,以将产品根本没有售出的月份计算在内。

任何提示表示赞赏。

【问题讨论】:

你是指日均销售额吗? 提示:平均值只是总和除以计数。 提示:查看 GroupBy ... 拥有:msdn.microsoft.com/en-us/library/ms177673.aspx 【参考方案1】:

如果我很了解您的需求,您想知道包括 2012 年至 2014 年期间售出的平均产品数量,即售出的产品数量除以 36。

为了管理在此期间未售出的产品,关键是在 dim_product 表上进行右连接(或左连接):然后每个产品至少有一行(在这种情况下, units_sold 字段将为空)。请求应该是这样的(未经测试!)

SELECT product_name, units_sold FROM dim_product RIGHT JOIN fact_sales ON dim_product.Id=Fact_sales.product_id WHERE date...;

然后,您可以调整它以计算units_sold 的总和(如果没有,则为零),然后除以月数。

它应该看起来像这样(甚至比前一个更未经测试):

SELECT product_name, SUM(units_sold)/36 as average_per_month FROM dim_product RIGHT JOIN fact_sales ON dim_product.Id=Fact_sales.product_id WHERE date...;

还有文档链接:https://technet.microsoft.com/en-us/library/ms187518%28v=sql.105%29.aspx

【讨论】:

以上是关于sql 平均上班时间的主要内容,如果未能解决你的问题,请参考以下文章

sql 时间计算,有以下一个每天的刷卡时间表,求每天上班上了多少个小时的sql 语句

SQL 统计每日上班打卡和下班打卡语句

SQL:时间维度和计算平均值

sql查询平均下单时间

SQL按时间戳间隔获取平均值

问一个考勤SQL语句的问题,想查询一整月考勤记录