2015-07-21 2 views
0

У меня есть данные, как указано ниже, количество (например: количество сложных вопросов создано месяц мудрый), мне также нужно получить сумму счета здесь для всех 12 месяцев, основанных на имени в одном ряду, это достижимо?Можно ли получить общее количество в одной строке

Ниже приведен запрос

WITH 
PERIOD AS 
(
    SELECT LEVEL LVL ,TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1)), 'MON YY') PERIOD_DATE ,ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1)) PERIOD_DATE_RAW 
    FROM DUAL 
    CONNECT BY 
    LEVEL < 13 
) 

,INCIDENTDATA AS 
(
    SELECT COUNT(1) COUNT_OF,SUM(COUNT(*)) OVER() ,TRUNC(IMM.CREATED_DATE,'MON')CREATEDATE, IMM.CATEGORY_ID Category 
    FROM IN_INC IMM 
    GROUP BY TRUNC(IMM.CREATED_DATE,'MON'),IMM.CATEGORY_ID 
) 

,DUALL AS 
(
    SELECT CAT.NAME NAME,CAT.ID ID FROM IN_IN CAT 
) 

,PERIODDATA AS 
(
    SELECT PD.LVL,PD.PERIOD_DATE, DUALL.NAME,DUALL.ID,PD.PERIOD_DATE_RAW 
    FROM DUALL CROSS JOIN PERIOD PD 
    ORDER BY DUALL.NAME ,PD.LVL 
) 

SELECT PRO.NAME,PRO.PERIOD_DATE,RD.COUNT_OF,count(I.ID)total 
FROM PERIODDATA PRO 
LEFT OUTER JOIN INCIDENTDATA RD ON RD.CREATEDATE=PRO.PERIOD_DATE_RAW AND PRO.ID=RD.Category 
LEFT OUTER JOIN IN_INC I ON I.CATEGORY_ID = RD.Category 

GROUP BY PRO.NAME,PRO.PERIOD_DATE,RD.COUNT_OF,PRO.LVL 
ORDER BY PRO.NAME, PRO.LVL,PRO.PERIOD_DATE 

в общей колонке, у меня есть счета (ID), который им получать отсчет в течение 12 месяцев, но если вы видите набор результатов я писал в своем 1-ом посте, общее количество повторений для каждой строки, мой вопрос здесь - можно каким-то образом отобразить общее количество 12 месяцев за один раз?

Name    Date Count total count 

Complex  JAN 15   0 
Complex  FEB 15   0 
Complex  MAR 15   0 
Complex  APR 15   0 
Complex  MAY 15   1 3 
Complex  JUN 15   1 3 
Complex  JUL 15   1 3 
Complex  AUG 15   0 
Complex  SEP 15   0 
Complex  OCT 15   0 
Complex  NOV 15   0 
Complex  DEC 15   0 
Issue  JAN 15   0 
Issue  FEB 15   0 
Issue  MAR 15   0 
Issue  APR 15   2 12 
Issue  MAY 15   0 
Issue  JUN 15   9 12 
Issue  JUL 15   1 12 
Issue  AUG 15   0 
Issue  SEP 15   0 
+1

Какой rdbms вы используете? – Marusyk

+1

'SELECT name, count (*) from my_table GROUP BY name;' – dan08

+0

Привет, мне нужно получить общее количество (за все 12 месяцев), набираемое по имени и месяцам, как в приведенном выше образце данных – newuser

ответ

-1
SELECT name, SUM(total count) AS count_sum FROM your_table ORDER BY name 

Я думаю, что это то, что вы хотели

SUM() функция SQL хорошо работает для вашего сценария

1

Если total_count еще не создана, и вы хотите создать его:

SELECT name,date,count,SUM(count) OVER (PARTITION BY name) as total_count 
+0

Извините, не видел, чтобы вы использовали Oracle. Не уверен, что это работает, это для SQL Server –

+0

Привет, Сэм, он работает, общее количество повторяется на все 12 месяцев. – newuser

+0

@newuser. Извините, должно быть, SUM, а не COUNT. Единственная причина для использования раздела здесь заключается в том, что вы можете по-прежнему включать столбец даты. Возможно, вам придется сделать некоторую группировку, но не уверен –

0

Пример: MS SQL

SELECT MyTable.[Name], MyTable.[Date], MyTable.[Count], RefTable.TOTAL 
FROM MyTable 
LEFT JOIN (SELECT [Name] AS RefName, SUM([Count]) AS TOTAL FROM MyTable GROUP BY [Name]) AS RefTable 
ON MyTable.[Name]= RefTable.RefName AND MyTable.[Count] > 0 

и здесь жить Demo через sqlfiddle.

Я надеюсь, что это полезно для вас, даже если это MS SQL.

Смежные вопросы