2011-06-21 82 views
0

這裏是我的表:此查詢可能嗎?

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

假設至少有一名僱員每天開始因爲業務的啓動,以便

select distinct startdate from employee 

將返回每天的業務是開放的。我已經提供了一個查詢來獲取每天的業務開放時間,但每天都會與當天僱傭的員工數量成對嗎?基本上,我問的是,是否可以計算每天的開始日期< = day AND finishdate> = day)的僱員人數並在一個查詢中返回該關係。

+3

嘗試查詢,看看它是否 – Ibu

回答

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不假設只有一個員工開始在每個日期 –

+0

幹得好先生。我有類似的東西,但忘了團隊。謝謝。 – squinlan

0

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

如果您獲得MIN作爲startdate和MAX作爲finishdate,那麼您將擁有整個公司開放時間。

你的建議將返回每個日期至少有一名員工加入公司/開始工作。

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