
Андрей
05.11.2018
20:54:19
Кстати вспомнил про оконные функции
Вроде есть та что следующую строку возвращает

Tishka17
05.11.2018
20:54:54
Ух

Google

Tishka17
05.11.2018
20:54:58
Оконные это сильно

Сашок
05.11.2018
20:55:18
https://eax.me/python/

Андрей
05.11.2018
20:55:18
Ну да
В sqllite их в сентябре добавили
Нам уже прочитали лекцию
Я проспал

Tishka17
05.11.2018
20:56:17
Я про
select x, (select x from tablename as t2 where t2.date > t1.date order by t2.date limit 1) from tablename as t1

Андрей
05.11.2018
20:56:40
Ух перегруз

Tishka17
05.11.2018
20:56:40
Что-то такое

Андрей
05.11.2018
20:56:53
В смысле по нагрузке
На субд

Tishka17
05.11.2018
20:57:32
Ну можешь оконные
Но их редко юзают

Google

Tishka17
05.11.2018
20:57:59

Андрей
05.11.2018
20:58:11
Допустим я использую cte
Как тогда перестроить?
Придумал
row_number
И join по условию l.id+1=r.id
А потом проверить тип
Дальше просто where с условием не равенства
И в select count(*)
Если 0 то всё ок
Иначе нет

Dmitri
05.11.2018
21:01:24

Андрей
05.11.2018
21:01:34
where
Сори
Описка
Вот так индексы получил в таблице
select (select count(*) from EVENTS b where a.TIME >= b.TIME) as cnt, * from EVENTS as a
А это сама проверка
(with tmp as (select * from sorted_events where sorted_events.ROWI = EMPLOYEES.ROWI)
select count(*) from tmp as a join tmp as b on a.cnt + 1 = b.cnt where a.WHAT = b.WHAT) = 0
Открыт для критики и предложения

Google

Nikolay
05.11.2018
21:17:39

Tishka17
05.11.2018
21:38:52

Андрей
05.11.2018
21:39:10

Tishka17
05.11.2018
21:40:21
Хз
Проверь, работает или не

Андрей
05.11.2018
21:40:38
Проверил
Выполняется
Повезло что в одно и тоже время не может быть события
А так
Да
Согласен
Говно костыль

Tishka17
05.11.2018
21:41:36
Да может и норм

Андрей
05.11.2018
21:41:56
При равных значениях будет бред

Tishka17
05.11.2018
21:41:59
Вообще, сравни с моим вариантом
Имхо, count будет дольше

Андрей
05.11.2018
21:42:50
Да
Я знаю
Хотя
Нет

Google

Андрей
05.11.2018
21:43:18
Сортировка
Каждый раз
А у меня один

Tishka17
05.11.2018
21:44:03
Ну хз. Планировщик может один раз все отсортировать

Андрей
05.11.2018
21:44:32
Меня смутила постоянрая сортировка

Admin
ERROR: S client not available

Tishka17
05.11.2018
21:44:34
А Каунт - точно полный проход каждый раз
Надо проверять. Я не так силен в бд

Андрей
05.11.2018
21:44:48
N*n*logn
А у меня n*n
Where раньше
Не полный

Tishka17
05.11.2018
21:45:34
Если сортировка будет один раз сделана - n*log n и останется
Не полный
У тебя же в каждом шаге новый вложенный count, не?

Андрей
05.11.2018
21:46:46
Если и будет оптимизация то только в крутых субд
Коррелирующий запрос
Только сначало where
Count бежит по отфильтрованным записям

Google

Tishka17
05.11.2018
21:48:32
Ну и что, что where. Он порядок сложности не меняет.
Толе число записей уменьшит

Андрей
05.11.2018
21:48:51
В контексте o большого нет
Но а так в половину меньше

Tishka17
05.11.2018
21:50:02
Короче, я за ордер с индексом. Там хоть есть шансы на оптимизацию
Вплоть до хранения постоянно отсортированной таблицы
Where тоже не мгновенный.
Мне надо одну запись найти, а тебе все

Андрей
05.11.2018
21:52:09
Это да
Я придумал рекурсивный запрос
Какраз всё пронумерует
Хотя не
Тоже фигня
Вот здесь оконные функции и нужны

Sfy
05.11.2018
22:38:28
Смотрите.
Есть методы инстансов, они привязаны к self.
Есть методы класса, они привязаны к cls.
Есть статические методы, которые не привязаны ни к чему (не используют в себе ссылки на объект).
Абстрактные методы, как я понял, это методы, которые лежат в самом базовом по отношению к данному классу классе, но при этом в нём не имплементированы.
Зачем такое вообще нужно?
Зачем заранее придумывать метод для классов-наследников, который наследуется, как не имплементированный?