이 데이터 구조로 원하는 결과를 얻을 수 있는지 잘 모르겠습니다. http://sqlfiddle.com/#!9/84939mysql은 각 유형을 행 및 그룹으로 날짜 범위별로 표시합니다.
이것은 기간 데이터를 무시하십시오.
+----+---------------------+---------------------+---------------------+----------+--------+------+
| id | created_date | start_date | end_date | duration | status | type |
+----+---------------------+---------------------+---------------------+----------+--------+------+
| 1 | 2016-04-05 15:23:29 | 2016-08-15 10:21:53 | 2016-08-19 00:00:00 | 30 | 1 | 2 |
| 2 | 2016-04-06 15:23:29 | 2016-08-15 10:21:53 | 2016-08-19 00:00:00 | 30 | 1 | 1 |
| 3 | 2016-04-06 15:23:29 | 2016-08-15 10:21:53 | 2016-08-19 00:00:00 | 30 | 1 | 3 |
| 4 | 2016-04-06 15:23:29 | 2016-08-17 10:21:53 | 2016-08-19 00:00:00 | 30 | 1 | 1 |
| 5 | 2016-04-06 15:23:29 | 2016-08-17 09:21:53 | 2016-08-19 00:00:00 | 30 | 1 | 1 |
| 6 | 2016-04-06 15:23:29 | 2016-08-01 09:21:53 | 2016-08-31 00:00:00 | 30 | 1 | 1 |
| 7 | 2016-04-06 15:23:29 | 2016-08-01 09:21:53 | 2016-08-31 00:00:00 | 30 | 0 | 1 |
| 8 | 2016-04-06 15:23:29 | 2016-08-15 09:21:53 | 2016-08-16 00:00:00 | 30 | 1 | 2 |
| 9 | 2016-04-06 15:23:29 | 2016-08-16 09:21:53 | 2016-08-17 00:00:00 | 30 | 1 | 3 |
| 10 | 2016-04-06 15:23:29 | 2016-08-19 09:21:53 | 2016-08-20 00:00:00 | 30 | 1 | 2 |
+----+---------------------+---------------------+---------------------+----------+--------+------+
2016-08-15에서 2016-08-19까지 보고서를 필터링하고 싶습니다. 2015-08-19 00:00:00에도 카운트를 고려하지 않았는지 확실하지 않습니다. 하지만 내 예를 들어. 범위에 있기 때문에 계산됩니다. 이 수동으로 나에 의해 수행을 요약 한 것입니다 : -
(type-2)15,16,17,18,19
(type-1)15,16,17,18,19
(type-3)15,16,17,18,19
(type-1)17,18,19
(type-1)17,18,19
(type-1)15,16,17,18,19
(type-1)15,16,17,18,19
(type-2)15,16
(type-3)16,17
(type-2)19,20
이 내가 SQL 리턴 데이터를 생성하고 싶은 결과이다.
+------------+--------+-----------+-----------+-----------+
| date | ct_all | ct_type_1 | ct_type_2 | ct_type_3 |
+------------+--------+-----------+-----------+-----------+
| 2016-08-15 | 6 | 3 | 2 | 1 |
| 2016-08-16 | 7 | 3 | 2 | 2 |
| 2016-08-17 | 8 | 5 | 1 | 2 |
| 2016-08-18 | 7 | 5 | 1 | 1 |
| 2016-08-19 | 8 | 5 | 2 | 1 |
+------------+--------+-----------+-----------+-----------+
ct_all =
유형 1에 대한 모든
ct_type_1 = 총 개수만큼 시작일에 입력 낙하를 계산 한 다음 개수 종료일 것이다. 일반적으로 검색 날짜는 한 열 유형 (예 : created_date)의 기준입니다. > =와 < = 사이에서 범위를 찾을 수 있습니다. 하지만이 사람에게는 시작일과 종료일이 있습니다. 확신 할 수 없거나하지 않을 수 있습니다.
모든 기존 날짜가있는 표가 있어야합니다 (예 : [달력 표 : 귀중한 데이터베이스 도구] (http://www.brianshowalter.com/calendar_tables) 참조). '> = start_date'와'<= end_date'에 여러분의 데이터를 연결하십시오. 이것은 당신이 그 때 셀 수 있습니다. – Solarflare