【问题标题】:Count numbers of days worked for Employees in SQL Server计算 SQL Server 中员工的工作天数
【发布时间】:2017-04-04 03:44:31
【问题描述】:

我有一个包含交易数据的数据库。我正在尝试计算所有员工在“2016-03-01”和“2017-03-01”之间工作的天数。我用来确定每位员工的工作天数是通过 count(distinct day(datecompleted)) 来确定,其中 datecompleted 类似于员工作为司机完成活动的一天。

问题是每天可能有 50-100 笔交易,每笔交易都有一个 datecompleted 时间戳,但是我只想通过抓取一个不同的日期(datecompleted)然后计算给定日期之间的数量来检查员工当天是否工作时间框架...

我使用了这个查询:

select 
    count(distinct day(dateCompleted)),
    repName
from 
    DATABASE_view_Final
where 
    datecompleted between '2016-03-01' and '2017-03-01'
group by 
    repName

由于某种原因,我不断得到结果:31....

这没有任何意义......请有人帮忙

【问题讨论】:

  • 您计算不同的日子而不是日期。更改为选择计数(不同的日期已完成),
  • 您可能需要使用子查询来获取员工和不同的日期。然后在外部查询中按员工人数分组
  • 但是在 4 月 3 日的示例中,有各种时间戳...随着时间的推移...会有所不同吗?
  • 所以投日期字段应该按照我在约翰的回答下的建议进行

标签: sql sql-server sql-server-2008 tsql sql-server-2012


【解决方案1】:

您计算不同的 (1-31) 不是日期。或许你可以试试:

select count(distinct cast(dateCompleted as date)),
repName
from DATABASE_view_Final
where datecompleted between '2016-03-01' and '2017-03-01'
group by repName

【讨论】:

  • 附录,前提是 datecompleted 是仅日期,否则转换为日期
  • @maSTArHiAn 非常正确,我确实假设了日期而不是日期时间
  • 嗨 John..如果 datecompleted 的格式为 yyyy-mm-dd hh:mm:ss....这仍然适用于这种日期格式吗?
  • @BorisD'Souza 很高兴为您提供帮助。总是小事会让你感动?
猜你喜欢
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多