Запрос на получение значения счетчика на основе временного интервала - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть таблица, подобная этой:

p_central_ticket
================
- t_id              ======>   id ticket
- t_open_by         ======>   name that raise the ticket
- t_closed_by       ======>   name that closed the ticket 
- t_open_time       ======>   open ticket time
- t_closed_time     ======>   closed ticket time

Как мне поступить, если я хочу показать Подсчет всех билетов, которые закрыты по имени, и по закрытому времени сегодня, еженедельно, ежемесячно и ежегодно?Вот так:

    Name                today      weekly     monthly     yearly     
=================================================================   
test1@random.com         2           10          70        1000         
test2@random.com         5           14          60        1234

Пример данных:

t_id      t_open_by      t_closed_by       t_open_time        t_closed_time
===========================================================================
 1     amir@random.com   test1@random.com   2018-03-28          2018-03-29
 2     tiki@random.com   test1@random.com   2018-04-28          2018-05-29

Нужна помощь, ребята ... Спасибо

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

В MySQL можно использовать что-то похожее на приведенное ниже: (Обратите внимание, проверьте синтаксис, если есть какая-либо ошибка.)

SELECT a1.t_closed_by as Name,
    (SELECT COUNT(*) FROM p_central_ticket WHERE t_closed_time = CURDATE() and t_closed_by = a1.t_closed_by) as today,
    (SELECT COUNT(*) FROM p_central_ticket WHERE t_closed_time > DATE_SUB(CURDATE(), INTERVAL 7 DAY) and t_closed_by = a1.t_closed_by) as weekly,
    (SELECT COUNT(*) FROM p_central_ticket WHERE t_closed_time > DATE_SUB(CURDATE(), INTERVAL 30 DAY) and t_closed_by = a1.t_closed_by) as monthly,
    (SELECT COUNT(*) FROM p_central_ticket WHERE t_closed_time > DATE_SUB(CURDATE(), INTERVAL 365 DAY) and t_closed_by = a1.t_closed_by) as yearly
FROM (SELECT DISTINCT t_closed_by FROM p_central_ticket) a1 ;
0 голосов
/ 12 февраля 2019

Вы можете использовать это для получения записей из таблиц с интервалом четных минут

 SELECT column1,column2,.... FROM tableName
    WHERE
        (DateAndTime BETWEEN '2019-02-11 14:00' AND '2019-02-12 22:00')
    AND
        (DATEPART(MINUTE, DateAndTime) % 60 = 0)
0 голосов
/ 12 февраля 2019

Примерно так:

SELECT `t_closed_by`,
  COUNT( case when `t_closed_time` > curdate() - interval '1' day THEN 1 END ) as today,
  COUNT( case when `t_closed_time` > curdate() - interval '7' day THEN 1 END ) as weekly,
  COUNT( case when `t_closed_time` > curdate() - interval '1' month THEN 1 END ) as monthly,
  COUNT( case when `t_closed_time` > curdate() - interval '1' year THEN 1 END ) as yearly
FROM Table1
GROUP BY `t_closed_by`

Демо: http://sqlfiddle.com/#!9/3d792/11

...