这是我的表:
table employee (
char(50) name
datetime startdate
datetime finishdate
}
假设自业务开始以来每天至少有一名员工开始这样做
select distinct startdate from employee
每天都会返回业务开放。我已经提供了一个查询,以便每天开展业务,但是每天是否会与当天雇用的员工数量成对?基本上我问的是,是否有可能计算每天的(startdate< = day AND finishdate> = day)的员工数量,并在一个查询中返回该关系。
答案 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,你将拥有公司开放的整个时间段。
您的建议将在每个日期返回至少一名员工加入公司/开始工作。