2017-09-18 18 views
-1

こんにちは私は、OracleデータベースのSQLは、以下のように表示された変数の値のカウントを返す必要がありますシナリオがあります。Oracle DBカウント非連続アクション

アクションフィールドには、異なるタイムスタンプの値として[挿入]と[削除]が表示されますが、カウントをレポートすると、指定した入力と同じになります。

enter image description here

ロジックは、それが、それぞれdelete又はInsertに当たるまで全てInsertまたはすべてDelete1としてカウントされるべきです。

お客様はコールセンターのように、任意の数のコンプライアント(Insert)を追加することができますが、そのユーザーIDは1とカウントされます。すでに登録されているクレームが解決された場合(Delete) 1として数えられる。

ご協力いただきありがとうございます。事前に感謝しております。

仁王門

答えて

0

はこれを試してみてください:

select keyfield, action, count(*) from (
    select lead(action, 1, 'other') over (partition by keyfield order by timestamp) as naction, action from t1) 
where action != naction group by action, keyfield; 

アイデアは(同じアクションのチェーンを無視する)他のアクションが続いているレコードだけを選択するために、分析機能を使用することです。その後、アクションとIDでグループ化してカウントします。

+0

回答ありがとうございました。私は、SQL-oracleコードのデータ、入力、および予想される出力について、より明確な考え方をしたいと思っています。最初のスレッドでサンプル入力データと期待される出力を更新しました。手伝っていただけませんか。 – deva