4

incident_idエントリごとに、 (または、(日付)および(日付)statusのいずれかを含むテーブルがあります。opencloseddate_raisedclosure_date

閉鎖日にクローズされたインシデントの数(つまり、incident_id場所のカウントstatus='closed' and closure_date is not null)と、開いたままのインシデントの数(同じ日のincident_id場所のカウント)をカウントするテーブルを表示したいと思います。status='open'

私があなたを混乱させた場合のために、このようなテーブルは次のようになります。

 ______________________________________________________________________________
| closure date | count of incidents closed | count of incidents remaining open |
|--------------|---------------------------|-----------------------------------|
| 01-Sep-12    | 5                         | 14                                |
| ...          | ...                       | ...                               |

私は次のようにクローズされたインシデントのカウントを行うテーブルを管理しました:

SELECT COUNT(incident_id)
WHERE closure_date IS NOT NULL AND status="open"
GROUP BY closure_date

私は他のカウントを機能させるために今何時間も試しましたが、今のところできません:-(

編集:これは私が持っているテーブルの例です:

 ___________________________________________________
| incident_id | status | date_raised | closure_date |
|-------------|--------|-------------|--------------|
| 1           | closed | 01-Sep-12   | 01-Sep-12    |
| 2           | open   | 30-Aug-12   | (null)       |
| 3           | open   | 02-Sep-12   | (null)       |
| 4           | closed | 02-Sep-12   | 05-Sep-12    |
| ...         | ...    | ...         | ...          |

テーブルを与えるだろう:

 ______________________________________________________________________________
| closure date | count of incidents closed | count of incidents remaining open |
|--------------|---------------------------|-----------------------------------|
| 01-Sep-12    | 1                         | 1                                 |
| 05-Sep-12    | 1                         | 2                                 |
4

3 に答える 3

1

日付ごとに、その日付までにクローズされた問題の数と、その日付より前に提起されたまだ開いている問題の数を取得したいようです。正しいですか? したがって、次のようなものが必要になる場合があります。

SELECT t1.closure_date, COUNT(t1.incident_id)
     , ( SELECT COUNT(t2.incident_id) FROM incident_table t2
          WHERE t2.status = 'open'
            AND t2.raised_date < t1.closure_date )
  FROM incident_table t1
 WHERE t1.closure_date IS NOT NULL
   AND t1.status = 'closed'
 GROUP BY t1.closure_date
于 2012-09-13T14:23:58.717 に答える
1
SELECT 
COUNT(*) as closed,
(SELECT COUNT(t2.incident_id) FROM TABLE t2 WHERE t2.status = 'open' and t2.raised_date < t1.closure_date) as open
FROM TABLE t1
WHERE 
t1.status = 'closed'
GROUP BY t1.closure_date

または同じ考え

WITH opened AS (SELECT COUNT(t2.incident_id) as cnt FROM table t2 WHERE STATUS = 'open' )
SELECT 
   to_char(closure_date, 'yyyy/mm/dd') as dte
   count(*) as closed,
   opened.cnt as opens
FROM table, opened
WHERE status = 'closed'
GROUP BY to_char(closure_date, 'yyyy/mm/dd'), opened.cnt
于 2012-09-13T13:33:14.893 に答える
0

次のようなことを試してみてください。

SELECT 
closure_date,
SUM(CASE WHEN status="open" 
         THEN 1 ELSE 0 END) AS "count of incidents open",
SUM(CASE WHEN  status="closed" 
         THEN 1 ELSE 0 END) AS "count of incidents closed"
FROM YourTable
WHERE closure_date IS NOT NULL
GROUP BY closure_date
于 2012-09-13T13:32:30.903 に答える