这个查询可能吗?

时间:2011-06-21 02:12:40

标签: mysql sql database

这是我的表:

table employee (
    char(50) name
    datetime startdate
    datetime finishdate
}

假设自业务开始以来每天至少有一名员工开始这样做

 select distinct startdate from employee

每天都会返回业务开放。我已经提供了一个查询,以便每天开展业务,但是每天是否会与当天雇用的员工数量成对?基本上我问的是,是否有可能计算每天的(startdate< = day AND finishdate> = day)的员工数量,并在一个查询中返回该关系。

3 个答案:

答案 0 :(得分:2)

SELECT x.startDate, COUNT(e.startDate)
FROM (SELECT DISTINCT startDate FROM employee) AS x
    INNER JOIN employee AS e
        ON x.startDate BETWEEN e.startDate AND e.finishDate
GROUP BY x.startDate

答案 1 :(得分:1)

SELECT e1.startdate, COUNT(*) AS num_employed_on_date
FROM employee e1 INNER JOIN employee e2 
  ON e1.startdate BETWEEN e2.startdate and e2.finishdate
GROUP BY e1.startdate

答案 2 :(得分:0)

'startdate'包含员工加入公司的日期。

如果你获得startdate的MIN和完成日期的MAX,你将拥有公司开放的整个时间段。

您的建议将在每个日期返回至少一名员工加入公司/开始工作。