2013-05-27 4 views
0

У меня есть таблица журналов с записями веб-журнала, которые имеют идентификатор сеанса. У меня также есть таблица сеансов, суммирующая сеансы из предыдущей таблицы. Поэтому мне нужно запустить некоторый оператор SQL-запроса, но я не понимаю, как построить инструкцию SQL для поля с именем session_length. В этой области я надеюсь присвоить количество событий в этом конкретном сеансе.Обновление поля в таблице с числом, агрегированным из другой таблицы

Допустим, у меня есть следующий журнал таблицы:

| 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-запрос с использованием обновления. В частности, я использую PostgresSQL в AWS RedShift.

+0

Что вы имеете в виду под «числом событий»? Кроме того, какие другие поля входят в сводную таблицу? –

+0

Я имел в виду записи номера журнала с тем же идентификатором сеанса. Существуют и другие поля, такие как время начала сеанса, пользовательский агент и т. Д., Но они заполняются, поэтому для отдельного обновления требуется. – kee

ответ

1

Вы можете сделать это с помощью связанного подзапроса в update заявлении:

update sessions 
    set session_length = (select count(*) 
          from log 
          where log.sessionid = sessions.sessionid 
         ) 
Смежные вопросы