次のように私は、次の表の構造を持っている:(ブラックボックスを無視Excelで質問をフォーマットしてください。)トリッキー更新問題
alt text http://img525.imageshack.us/img525/5788/beforeznj.jpg
は、私は何をする必要があることにSessionGUIDデータを変換することですTSQLを使用して、以下: alt text http://img4.imageshack.us/img4/4553/afterjer.jpg
これは私のウェブサイトのためのユーザーセッションテーブルであり、それはすべてのページのロードに)(NEWIDを生成したことで、私たちはSessionGUID年代を台無しに。これで、作成された最初のSessionGUIDを使用して、ユーザーが最後のページロードから30分後にページ読み込みをトリガーしない場合、セッションが中断されたと仮定して、タイミングによってセッションをグループ化する必要があります。
さらに簡単な例を説明すると、User(00000000-0000-0000-0000-000000000000)は09/01/2009に自分のサイトを2回訪問しました。 1つは13:37に、もう1つは14:46に。ユーザー(A107EF1E-00A2-4515-A120-984086BC8368)。実際の表には、更新が必要な数百万の行が含まれていることに注意してください。 :(
UPDATE ランディングページ/各セッションのURLを開始するには、常に「ホームページ」ではありません、それはウェブサイト上の任意のページである可能性があります。プロットが厚く..
アップデート2テストデータ
CREATE TABLE Sessions (IPAddress VARCHAR(15), UserGUID UNIQUEIDENTIFIER, DATE DATETIME, URL VARCHAR(200), SessionGUID UNIQUEIDENTIFIER)
INSERT INTO Sessions (
IPAddress,
UserGUID,
DATE,
URL,
SessionGUID
)
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 13:37:34', 'homepage', '2B3A80B1-A247-4BB5-81BB-B54DED0C9C6A')
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 13:37:36', 'page1', '7FB10E12-5EB9-428C-BE3E-57818DEF8512')
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 13:37:41', 'page2', 'D12C3539-1239-447E-8BD8-DBA6B7087ADE')
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 14:56:00', 'homepage', '4FE36C46-640B-464F-8118-AFFE477347A1')
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 14:56:10', 'page2', 'FF9BF55B-3630-4D05-AB57-1B6ECAB96657')
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 14:56:18', 'page4', '863D3424-9788-481A-8440-09313ED4F8FE')
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 14:56:19', 'page3', '105D7FE5-C731-4EB6-B287-720127AAF0A3')
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 15:00:35', 'page5', '296479D0-3848-4189-94E2-41906BAE580D')
VALUES ('192.168.0.1', '00000000-0000-0000-0000-000000000000', '09/01/2009 15:00:36', 'page7', 'E3FFEBC6-C11E-4DF4-81FA-B42F1BF7AFD3')
VALUES ('212.1.1.0', 'A107EF1E-00A2-4515-A120-984086BC8368', '12/01/2009 18:30:22', 'homepage', '1F918AB3-34E1-4343-8462-FA56423B921D')
VALUES ('212.1.1.0', 'A107EF1E-00A2-4515-A120-984086BC8368', '12/01/2009 18:34:26', 'page1', '801C3DC8-F0F3-4B9C-BD53-BCCBE784CFAE')
VALUES ('212.1.1.0', 'A107EF1E-00A2-4515-A120-984086BC8368', '12/01/2009 18:38:17', 'page2', 'A9A5C2BD-31B9-4A9B-A8BC-88C460F17282')
VALUES ('212.1.1.0', 'A107EF1E-00A2-4515-A120-984086BC8368', '15/01/2009 11:42:27', 'page3', 'B29CE754-C7A3-40E8-8CB0-216A3E852762')
VALUES ('212.1.1.0', 'A107EF1E-00A2-4515-A120-984086BC8368', '15/01/2009 11:42:32', 'page4', 'E291C4B9-A422-4A76-A550-F65C208DD886')
VALUES ('212.1.1.0', 'A107EF1E-00A2-4515-A120-984086BC8368', '15/01/2009 11:44:51', 'page6', '63D4A636-8336-44E7-8C97-9CD65D21359E')
VALUES ('212.1.1.0', 'A107EF1E-00A2-4515-A120-984086BC8368', '15/01/2009 11:44:55', 'page2', '7BB814CD-C9B3-4CAF-A45C-4405DC0B07D2')
VALUES ('212.1.1.0', 'A107EF1E-00A2-4515-A120-984086BC8368', '15/01/2009 11:48:35', 'page4', 'B6DCEC1E-C262-425D-8E46-8F4B47F2921A')
感謝。
不幸DBA新人。
。そのため、1分ごとに1分ごとに配信されたWebページがあるユーザーは、45分間何もしないと、最初の1時間は1セッションになりますか?あなたのウェブサイトを知らないので、それが意味をなさないかどうかわかりません。 –
あなたはそうです。それが私の言うことです。今更新しています。 – super9
申し訳ありませんが、今日はこの時間がありません。インスピレーションのためにhttp://stackoverflow.com/questions/1287148/t-sql-query-to-flag-repeat-records/1292182#1292182をご覧ください。セッションの開始時刻と終了時刻で定義された可能なセッションを作成し、最初のセッションから開始し、再帰的なCTEで可能なセッションテーブルを歩きます。 –