2013-11-22 1 views
-2

У меня есть эта таблица, в которой мне нужно подсчитать, сколько проектов (заданий) я начал каждый день.SQL Count Количество запущенных проектов Каждый день между двумя датами

 
job start   end 
1 01-01-2013  04-01-2013 
2 01-01-2013  02-01-2013 
3 01-01-2013  03-01-2013 
4 03-01-2013  04-01-2013 
5 03-01-2013  04-01-2013 
6 03-01-2013  04-01-2013 
... 

я хочу подсчитать, сколько Иовом я начал каждый день ../я имею в виду, сколько работа открыты каждый день ..

 
date   count 
01-01-2013  3 
02-01-2013  3 
03-01-2013  5  
04-01-2013  4 
05-01-2013  0 
... 
+0

И что вы еще пробовали? –

+0

Какие rdbms вы используете? –

+0

Кажется, что количество заданий * активно * каждый день, а не те, которые были начаты * в каждый день (с тех пор ответ кажется 3 на 1-й и 3-й и 0 в другие дни) –

ответ

2
select start, count(*) as jobs_per_day 
from your_table 
group by start 

Но это не вернет записывать даты, когда вы не создали никакой работы.

+0

Добавление 'WHERE end <'01 -01-2014'', предполагая, что это дата окончания. – Tobberoth

-1

выберите старт как дата, COUNT (*) в качестве графа из table_name где start_date> = "дата начала" и end_date < = "дата окончания" группу по начало;

+0

Это не даст результат, который он ищет, поскольку он проверяет только одну конкретную дату начала и окончания. – Tobberoth

0

Следующие работы для меня в

PostgreSQL
with dates as (
    select aday::date 
    from generate_series((select min(start) from your_table), 
         (select max(end) from your_table), 
         '1 day'::interval) aday 
), flat as (
    select * 
    from dates, your_table 
    where dates.aday between your_table.start and your_table.end 
) 

select 
    aday, 
    count(*) as count 

from flat 

group by aday 

order by aday 
; 

Первый КТР генерирует ряд дат, которые, возможно, придется сделать по-другому в другой СУБД.

Смежные вопросы