【问题标题】:Find count of employees who have applied for timeoff查找已申请休假的员工人数
【发布时间】:2013-03-10 06:29:24
【问题描述】:

下面是我的表格中的 3 列以及其他 4 列。

ID  EMP_ID  APPROVAL_STATUS
103 0023946 Pending
105 0025830 Pending
109 0022786 Pending
111 0023946 Pending

我的问题:计算计划休假的员工人数的查询是什么?

请记住,ID 为 0023946 的员工已申请了 2 次超时,但仍应计数为 1,其余的加到总值中。

我用 ASP 写的查询:

SELECT COUNT(*), EMP_ID 
FROM TimeoffDetails 
WHERE APPROVAL_STATUS = 'Pending' 
GROUP BY EMP_ID

实际结果应该是 3 名员工请假。但上面的查询在 asp 中产生 1,而我在数据库中运行这个查询,结果为 3。

请帮助我找到解决方案。

【问题讨论】:

  • 您能否更新您的问题以包含您期望结果的样子?
  • 结果应该是 3。但是我上面的查询结果是 1。
  • 您使用的是哪个数据库?
  • MicroSoft Access DB 2010
  • 如果我使用 DISTINCT,它会给我 systax 错误消息

标签: sql ms-access count ms-access-2010


【解决方案1】:

好的,这行得通:

SELECT Count(*) AS count_employee FROM (SELECT DISTINCT EMP_ID FROM timeoffdetails);

【讨论】:

  • 非常感谢普拉迪普。在您的 SQL 查询的帮助下,我可以解决我的问题。下面是最终查询 SELECT Count(*) AS count_employee FROM (SELECT DISTINCT EMP_ID FROM TimeoffDetails WHERE APPROVAL_STATUS='Pending')
【解决方案2】:

您可以使用 DISTINCT COUNT(对于单个总值,您不需要使用 GROUP BY):

SELECT COUNT(DISTINCT EMP_ID) FROM table_name TimeoffDetails WHERE APPROVAL_STATUS='Pending'

或与您的 GROUP BY:

SELECT COUNT(DISTINCT EMP_ID), EMP_ID FROM table_name TimeoffDetails WHERE APPROVAL_STATUS='Pending' GROUP BY EMP_ID

【讨论】:

  • 我在查询表达式“COUNT(DISTINCT EMP_ID)”中收到错误消息 Microsoft JET 数据库引擎错误“80040e14”语法错误(缺少运算符)。 /OvertimeTrackingApp/ListEmp.asp,第 59 行 EMP_ID 是在 DB 中归档的文本。我保留了文本,因为 emp_id 可以是字母数字。
猜你喜欢
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 2019-10-23
  • 2013-06-18
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多