Возможен ли этот запрос? - PullRequest
0 голосов
/ 21 июня 2011

Вот моя таблица:

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

Предположим, что хотя бы один сотрудник начинал каждый день с начала бизнеса, чтобы

 select distinct startdate from employee

возвращался каждый день, когда бизнес был открыт,Я уже предоставил запрос, чтобы получать информацию каждый день, когда бизнес был открыт, но будет ли он сопоставляться каждый день с количеством сотрудников, которые были заняты в этот день?По сути, я спрашиваю, возможно ли подсчитать количество сотрудников, для которых (startdate <= день AND finishdate> = день) верно для каждого дня, и вернуть это отношение в одном запросе.

Ответы [ 3 ]

2 голосов
/ 21 июня 2011
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 голос
/ 21 июня 2011
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
0 голосов
/ 21 июня 2011

«startdate» содержит дату, когда сотрудник присоединился к компании.

Если вы получите MIN для начальной даты и MAX для конечной даты, у вас будет весь промежуток времени, в течение которого компания была открыта.

То, что вы предлагали, будет возвращать каждую дату, как минимум один сотрудник присоединился к компании / начал работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...