SQL - Найти самую последнюю дату изменения статуса (понижение) и количество полных экземпляров. - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть две таблицы: A и B. A содержит сегодняшние данные, а B содержит моментальный снимок данных каждого дня (в основном таблица истории с добавленными данными каждого дня).

Таблица A

Date       ID  Status
2/6/2020   N1  1
2/6/2020   N2  2

Таблица B

Date       ID  Status
2/2/2020   N1  1
2/3/2020   N1  2
2/4/2020   N1  2
2/5/2020   N1  2
2/6/2020   N1  1
2/2/2020   N2  3
2/3/2020   N2  2
2/4/2020   N2  3
2/5/2020   N2  2
2/6/2020   N2  2

Состояние может изменяться в сторону увеличения (например, 1 -> 2) или в сторону уменьшения (например, 3 -> 1). Меня волнует только нисходящее изменение. Не каждая запись (ID) будет иметь нисходящие изменения. Предполагая, что формат даты является форматом по умолчанию, и в таблице B гораздо больше дат и гораздо больше идентификаторов

Что я хотел бы получить:

  1. Когда последний раз статус менялся в сторону понижения до текущего статуса (на основе статуса таблицы A) для каждого идентификатора. Таким образом, для N1 это было 2/6/2020, а для N2 это было 2/5/2020

  2. Сколько раз происходило нисходящее изменение для каждого идентификатора. Таким образом, N1 был 1 раз, а N2 - 2 раза.

  3. Сколько существует идентификаторов, чей текущий статус ниже, чем предыдущий. В этом примере есть 2 (N1 и N2)

Спасибо !!

Q1 результат

Date      ID  Status
2/6/2020  N1  1
2/5/2020  N2  2

Q2 результат

ID  Times
N1  1
N2  2

Q3 результат

Total
2
...