是否可以在一行中获得总计数

时间:2015-07-21 13:54:32

标签: sql oracle count

我有以下数据,计数是(例如:复杂问题的数量是按月创建的),我还需要根据单行中的名称获取所有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个月的计数,但是如果你看到我在第一篇帖子中发布的结果集,每行的总重复次数,我的问题是这里有可能以某种方式一次显示总共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

3 个答案:

答案 0 :(得分:1)

如果尚未创建total_count,并且您希望创建它:

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

答案 1 :(得分: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

这里是AutoCloseable的现场演示。

我希望即使它是MS SQL也对你有用。

答案 2 :(得分:-1)

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

我认为这就是你想要的

SQL的SUM()函数适用于您的场景