Как я могу получить дельту для user_id с предыдущих месяцев, используя оракул sql - PullRequest
0 голосов
/ 07 сентября 2011

Допустим, у меня есть таблица с именем "user_id, loaddate", и многие пользователи находятся в user_id, но некоторые из них могут добавляться или удаляться каждый месяц.Как я могу сравнить, чтобы узнать, кто был добавлен или исключен из предыдущего месяца?Я полагаю, что он будет получать дельту за предыдущий месяц за каждый месяц.

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

Предполагая, что LOADDATE представляет дату, когда пользователь был добавлен в вашу систему, тогда дельта новичков легко рассчитать.Морщина находит пользователей, которые были удалены.По умолчанию сделать это невозможно.

Обычный способ сделать это - сохранить аудит или историю активности для интересующих таблиц, обычно с помощью параллельной таблицы истории, которая заполняется триггерами DML.,

Более дорогой способ сделать это состоит в том, чтобы выделить для Oracle достаточно дорогой, но очень аккуратный продукт Total Recall (база данных AKA Flashback). Узнайте больше .

0 голосов
/ 07 сентября 2011

Чтобы узнать, кто был добавлен, вы можете найти user_ids с датой загрузки в течение последнего месяца. (Или user_ids, чьи loaddates все в течение последнего месяца, если пользователь может иметь несколько loaddates). Базы данных Oracle не имеют памяти о своем предыдущем состоянии, поэтому нет возможности искать вещи, которые раньше были в базе данных, но больше их нет. Возможно, вы могли бы получить пользователей, которые бросили учебу, если бы искали пользователей, у которых не было loaddate в течение последнего месяца, в зависимости от того, как именно работает ваша таблица. (Вы удаляете пользователей, когда они уходят?)

...