连续几天分组

时间:2012-10-29 09:25:10

标签: mysql hibernate

我有一个操作表,eache操作有两个日期,startDate和endDate, 我想在白天写出一个请求,但是以连续的方式

例如:

action ;  startDate ;  endDate

Action1 ; 2012-10-10 ; 2012-10-10

Action2 ; 2012-10-10 ; 2012-10-12

Action3 ; 2012-10-14 ; 2012-10-15

我的要求是

SELECT DAY(startDate), COUNT(Name) FROM ActionTable 
WHERE startDate < '2012-10-09' and endDate > '2012-10-15'
GROUP BY DAY(startDate)

此请求返回给我:

10 ; 2

14 ; 1

我需要一个获得此结果的请求

10 ; 2

11 ; 1

12 ; 1

14 ; 1

15 ; 1

所以,如果一个动作在三天内需要我每天+1,

2 个答案:

答案 0 :(得分:0)

我认为解决这个问题的唯一方法是在所有日子里都有一个单独的表格:

CREATE TABLE `days` (
  `day` date NOT NULL
)

您已插入要分组的所有日期(例如,整月):

INSERT INTO `days` (`day`) VALUES
  ('2012-10-10'),
  ('2012-10-11'),
  ('2012-10-12'),
  ('2012-10-13'),
  etc.

然后运行此查询:

SELECT days.day, count(*) as cnt
FROM
  days LEFT JOIN actions
  ON days.day >= actions.startDate and days.day <= endDate
GROUP BY days.day
HAVING Count(*)>0

答案 1 :(得分:0)

我有个主意

我认为每天都要创建一个新的计数,并按名称格式化日期 (星期一......)

所以我每天都会得到一个结果的结果

我的startDate; endDate是本周的两个限制