0

セッション ID を持つ Web ログ エントリを含むログ テーブルがあります。前の表のセッションをまとめたセッション表もあります。そのため、いくつかの更新 SQL ステートメントを実行する必要がありますが、「session_length」という名前のフィールドの SQL ステートメントを作成する方法がわかりません。このフィールドでは、その特定のセッションでのイベントの数を割り当てたいと考えています。

次のログテーブルがあるとします。

| Session ID | Timestamp | Action | ...
| 1          | 00:00:00  | get | ...
| 2          | 00:00:00  | get | ...
| 1          | 00:00:01  | get | ...
| 1          | 00:00:02  | get | ...
| 2          | 00:00:02  | get | ...

セッション テーブルでは、session_length フィールドに次の値を設定したいと考えています。

| Session ID | session_length | ...
| 1          | 3              | ...
| 2          | 2              | ...

これが単一のクエリで実行できるかどうかはわかりませんが、更新を使用して単一の SQL クエリで実行できるかどうかを確認したいと思います。特に、AWS RedShift で PostgresSQL を使用しています。

4

1 に答える 1

1

updateこれは、ステートメントで相関サブクエリを使用して行うことができます。

update sessions
    set session_length = (select count(*)
                          from log
                          where log.sessionid = sessions.sessionid
                         )
于 2013-05-28T01:13:29.783 に答える