powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / достать предыдущее значащее состояние (аналитические функции?)
9 сообщений из 9, страница 1 из 1
достать предыдущее значащее состояние (аналитические функции?)
    #39343869
evgenius_b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть лог опроса множества девайсов (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 и неправильный, когда состояние несколько отсчетов подряд не менялось.

По каким словам гуглить?
Особо буду признателен, если кинете пример(ы).
...
Рейтинг: 0 / 0
достать предыдущее значащее состояние (аналитические функции?)
    #39343870
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgenius_bЗначение 0 соответствует "состояние не изменилось"where state != 0
...
Рейтинг: 0 / 0
достать предыдущее значащее состояние (аналитические функции?)
    #39343872
evgenius_b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,
Да, но в таком случае, у меня пропадают timestamp where state = 0.
А нужно, чтобы они принимали предыдущее значащее значение.
...
Рейтинг: 0 / 0
достать предыдущее значащее состояние (аналитические функции?)
    #39343878
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgenius_bу меня пропадаюта зачем пользователю знать, что у тебя пропадает?
...
Рейтинг: 0 / 0
достать предыдущее значащее состояние (аналитические функции?)
    #39343880
evgenius_b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-а зачем пользователю знать, что у тебя пропадает?
окей, мне нужно, чтобы запрос возвращал результаты вида state_n.
потому что имхо геморроя с вариантом where state != 0 будет больше.
в общем не могу обосновать, но пока что в приоритете некая функция, возвращающая state_n.
...
Рейтинг: 0 / 0
достать предыдущее значащее состояние (аналитические функции?)
    #39343898
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgenius_b,

Код: plaintext
last_value(nullif(state, 0) ignore nulls) over (order by id) state_n
...
Рейтинг: 0 / 0
достать предыдущее значащее состояние (аналитические функции?)
    #39343903
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgenius_b,

Если в Vertica нет "ignore nulls", то count + nullif + max
...
Рейтинг: 0 / 0
достать предыдущее значащее состояние (аналитические функции?)
    #39343917
evgenius_b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopevgenius_b,

Код: plaintext
last_value(nullif(state, 0) ignore nulls) over (order by id) state_n


Спасиба огромное добрый человек!
Не, не так...

Спасибо тебе огромное, Добрый Человек!

last_value(state) over (partition by device_id order by timestamp) as state_n - в самую точечку!!!

Это просто магия.
И всем другим тоже спасибо.
...
Рейтинг: 0 / 0
достать предыдущее значащее состояние (аналитические функции?)
    #39344030
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgenius_bЭто просто магия.Действительно странно почему оно игнорирует нули без дополнительных телодвижений.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / достать предыдущее значащее состояние (аналитические функции?)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]