Выберите сумму счета в операторе выбора, где дата между - PullRequest
0 голосов
/ 11 марта 2019

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

Первый запрос выглядит следующим образом:

SELECT ROW_NUMBER() OVER (ORDER BY q.english_Name DESC) as id,
COUNT(t.id) AS ticket,
  q.english_name queue_name,
  ts.code current_status,
  COUNT(t.assigned_to)               AS assigned,
  (COUNT(t.id)-COUNT(t.assigned_to)) AS not_assigned
 ,trunc(t.create_date) create_Date
FROM ticket t
INNER JOIN ref_queue q
ON (q.id = t.queue_id)
INNER JOIN ref_ticket_status ts
ON(ts.id=t.current_status_id)     
GROUP BY q.english_name,
  ts.code
 ,trunc(t.create_date)  

, но когда я изменяю его на:

SELECT ROW_NUMBER() OVER (ORDER BY q.english_Name DESC) as id,
COUNT(t.id) AS ticket,
  q.english_name queue_name,
  ts.code current_status,
  COUNT(t.assigned_to)               AS assigned,
  (COUNT(t.id)-COUNT(t.assigned_to)) AS not_assigned
 ,trunc(t.create_date) create_Date
FROM ticket t
INNER JOIN ref_queue q
ON (q.id = t.queue_id)
INNER JOIN ref_ticket_status ts
ON(ts.id=t.current_status_id) 
where t.create_date between '18-FEB-19' and '24-FEB-19'

GROUP BY q.english_name,
  ts.code
 ,trunc(t.create_date)

, получается

1   1   Technical Support Sec.  CLOSED  0   1   19-FEB-19
2   6   Technical Support Sec.  OPEN    4   2   18-FEB-19
3   1   Technical Support Sec.  OPEN    0   1   21-FEB-19
4   3   Network Sec.            OPEN    2   1   18-FEB-19
5   1   Network Sec.            OPEN    0   1   21-FEB-19

как я могу получить итоговый результат за дни, так что результат будет:

1 7   Technical Support Sec.  OPEN    4   3   
2 4   Network Sec.            OPEN    2   2

1 Ответ

0 голосов
/ 11 марта 2019

Когда вы GROUP BY в запросе, ваш набор результатов будет включать одну строку для каждого отдельного набора значений в вашем списке GROUP BY.Например, причина, по которой вы получаете две строки для записей OPEN для раздела «Техническая поддержка», заключается в том, что для TRUNC(t.create_date) есть два различных значения, в результате чего получаются две группы и, следовательно, две строки в наборе результатов.

Чтобы избежать этого, прекратите группирование по TRUNC(t.create_date).

SELECT ROW_NUMBER() OVER (ORDER BY q.english_Name DESC) as id,
COUNT(t.id) AS ticket,
  q.english_name queue_name,
  ts.code current_status,
  COUNT(t.assigned_to)               AS assigned,
  (COUNT(t.id)-COUNT(t.assigned_to)) AS not_assigned
--     ,trunc(t.create_date) create_Date
FROM ticket t
INNER JOIN ref_queue q
ON (q.id = t.queue_id)
INNER JOIN ref_ticket_status ts
ON(ts.id=t.current_status_id) 
where t.create_date between '18-FEB-19' and '24-FEB-19'
GROUP BY q.english_name,
  ts.code
--     ,trunc(t.create_date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...