
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.11.2016, 20:26
|
|||
|---|---|---|---|
|
|||
достать предыдущее значащее состояние (аналитические функции?) |
|||
|
#18+
Всем привет! Есть лог опроса множества девайсов (device_id), состояния (state) которых могут принимать 3 значения: 0,1,2. Значение 0 соответствует "состояние не изменилось". Состояния 1 и 2 "значащие". timestampdevice_idstatestate_n05/11/2016 16:0011105/11/2016 17:0011106/11/2016 16:0010106/11/2016 19:0010107/11/2016 10:0010107/11/2016 11:0012207/11/2016 13:0010207/11/2016 15:0012207/11/2016 20:0010205/11/2016 16:0022205/11/2016 17:0020206/11/2016 16:0021106/11/2016 19:0021107/11/2016 10:0020107/11/2016 11:0022207/11/2016 13:0020207/11/2016 15:0020207/11/2016 20:0021108/11/2016 20:00201 Подскажите, пожалуйста, можно ли средствами стандартного ANSI SQL-99 формировать столбец state_n, в котором будут отображаться только значения состояний 1 и 2 как показано в таблице? Т.е. если смены состояния не было (state = 0), то брать предыдущее значащее значение состояния 1 или 2. Пример отсортирован сначала по device_id, затем по state для наглядности, в исходных данных сортировка только по timestamp. На самом деле у меня Вертика, так что некоторые аналитические функции имеются. Я попробовал применить lag(state) over (partition by device_id order by timestamp), но очевидно, функция дает правильный результат только для переходов из 1/2 в 0 и неправильный, когда состояние несколько отсчетов подряд не менялось. По каким словам гуглить? Особо буду признателен, если кинете пример(ы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2016, 20:33
|
|||
|---|---|---|---|
достать предыдущее значащее состояние (аналитические функции?) |
|||
|
#18+
evgenius_bЗначение 0 соответствует "состояние не изменилось"where state != 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2016, 20:41
|
|||
|---|---|---|---|
|
|||
достать предыдущее значащее состояние (аналитические функции?) |
|||
|
#18+
-2-, Да, но в таком случае, у меня пропадают timestamp where state = 0. А нужно, чтобы они принимали предыдущее значащее значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2016, 20:59
|
|||
|---|---|---|---|
достать предыдущее значащее состояние (аналитические функции?) |
|||
|
#18+
evgenius_bу меня пропадаюта зачем пользователю знать, что у тебя пропадает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2016, 21:08
|
|||
|---|---|---|---|
|
|||
достать предыдущее значащее состояние (аналитические функции?) |
|||
|
#18+
-2-а зачем пользователю знать, что у тебя пропадает? окей, мне нужно, чтобы запрос возвращал результаты вида state_n. потому что имхо геморроя с вариантом where state != 0 будет больше. в общем не могу обосновать, но пока что в приоритете некая функция, возвращающая state_n. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2016, 21:55
|
|||
|---|---|---|---|
|
|||
достать предыдущее значащее состояние (аналитические функции?) |
|||
|
#18+
evgenius_b, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2016, 22:06
|
|||
|---|---|---|---|
|
|||
достать предыдущее значащее состояние (аналитические функции?) |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2016, 22:31
|
|||
|---|---|---|---|
|
|||
достать предыдущее значащее состояние (аналитические функции?) |
|||
|
#18+
dbms_photoshopevgenius_b, Код: plaintext Спасиба огромное добрый человек! Не, не так... Спасибо тебе огромное, Добрый Человек! last_value(state) over (partition by device_id order by timestamp) as state_n - в самую точечку!!! Это просто магия. И всем другим тоже спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1887060]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 514ms |

| 0 / 0 |
