Как каждый день получать и подсчитывать в запросе между диапазонами дат? - PullRequest
0 голосов
/ 30 июня 2019

Это запрос, который я сейчас использую:

Select *
from attendance
where (in_time BETWEEN '2019-06-20 00:00:01' and '2019-06-20 23:59:59')
and (out_time BETWEEN '2019-06-28 00:00:01' and '2019-06-28 23:59:59')

Sample Database Image

, и мне нужен такой вывод.

Sample Output

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

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Я использовал этот запрос для сбора данных in_time и подсчета, а затем удалил время, используя подстроку.
SELECT substring(in_time,1,10), COUNT(DISTINCT employees_id) FROM attendance WHERE (in_time BETWEEN '2019-06-20 00:00:01' and '2019-06-28 23:59:59') GROUP BY substring(in_time ,1,10)

0 голосов
/ 30 июня 2019

Я думаю, вам нужно начать со списка дат, а затем использовать left join или коррелированный подзапрос:

select d.dte,
       (select count(*)
        from attendance a
        where a.in_time <= dte and a.out_time >= dte
       ) as cnt
from (select date('2019-06-20') as dte union all
      select date('2019-06-21') as dte union all
      select date('2019-06-22') as dte union all
      select date('2019-06-23') as dte union all
      select date('2019-06-24') as dte union all
      select date('2019-06-25') as dte union all
      select date('2019-06-26') as dte union all
      select date('2019-06-27') as dte union all
      select date('2019-06-28') as dte
     ) d;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...