项目的SQL计数在两个日期之间每天开始

时间:2013-11-22 14:42:01

标签: sql date 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
...

3 个答案:

答案 0 :(得分:2)

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

但是这不会返回您没有创建任何工作的日期的记录。

答案 1 :(得分: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
;

第一个CTE会生成一系列日期,这些日期可能必须在另一个RDBMS中以不同方式完成。

答案 2 :(得分:-1)

选择start作为日期,count(*)作为table_name的计数 其中start_date> ="您的开始日期"和end_date< ="你的结束日期" 开始分组;