2016-10-23 4 views
1

私のテーブル構造がある-sql:検索入力ページ、終了ページとバウンスは、次のように

Sessionid  Pageurl  timestamp 
    abc1   /testpage1 1465374987308 
    abc1   /testpage2 1465375020477 
    abc2   /testpage2 1465374987308 

は、私はページごとにカウントエントリーのページ数、退出ページ数とバウンスのレポートを作成したいです。

どのセッションでも、最初のページは入力ページであり、最後のページは終了ページです。ユーザーが(セッションが単一のエントリを持っている)

最終報告私はバウンスを取得することができた

pageurl  EntrypageCount  ExitPagecount  BounceCount 
/testpage1  1      0     0 
/testpage2  1      2     1 

..以下のようになるだろうが、上の最初のページを表示した後離れるとき

はバウンスが発生します1日あたりのバウンスのために 、選択ベースは..です

SELECT sessionid, min(timestamp),CASE WHEN count(*) = 1 THEN 1 ELSE 0 END AS bounces 
FROM auditdata GROUP BY sessionid. 

しかしPAGEURLによってそれらを取得する方法を見つけ出すことはできません。

すべてのサポートは誠にありがとうございます。

おかげ

+0

いくつかのサンプルデータと期待される結果を表示できますか? –

+0

どのRDBMSを使用していますか? –

+0

私はSQL Serverを使用していますが、クラウド上ではすべての機能ではありませんが、変更される可能性がありますので、任意のdb – Arnab

答えて

2

次は片道(demo)です。

上記では、最新のRDBMSでサポートされているウィンドウ関数を使用していないバージョンを使用しています。

SELECT Pageurl, 
     COUNT(CASE WHEN timestamp = First THEN 1 END) AS EntrypageCount, 
     COUNT(CASE WHEN timestamp = Last THEN 1 END) AS ExitPagecount, 
     COUNT(CASE WHEN Count = 1 THEN 1 END) AS BounceCount 
FROM auditdata a 
     JOIN (SELECT Sessionid, 
        MIN(timestamp) AS First, 
        MAX(timestamp) AS Last, 
        COUNT(*)  AS Count 
      FROM auditdata 
      GROUP BY Sessionid) g 
     ON a.Sessionid = g.Sessionid 
GROUP BY Pageurl; 
関連する問題