Я пытаюсь настроить проверку данных, где мы получаем количество строк из таблицы на сегодняшний день и предыдущую дату. Поскольку он не загружается в выходные или праздничные дни, я не могу сказать ДАТА-1.
Я придумал следующее, чтобы получить предыдущую дату:
SELECT
LOAD_DATE
,COUNT(LOAD_DATE) RW_COUNT
,ROW_NUMBER() OVER (ORDER BY LOAD_DATE ) AS LOAD_ROWNUM
FROM DATABASE1.TABLE1
WHERE LOAD_DATE >= DATE-6
GROUP BY 1
Этопроизводит даты, считает и присваивает номер строки.
LOAD_DATE RW_COUNT LOAD_ROWNUM
2019-10-16 8259 1
2019-10-15 8253 2
2019-10-11 8256 3
2019-10-10 8243 4
I, чтобы взять две самые актуальные даты и сравнить их. Самым текущим будет «текущий», а вторым самым текущим будет «предыдущий». Тогда я хотел бы иметь что-то вроде этого в качестве набора результатов:
CURRENT_COUNT PRIOR_COUNT DIFF_PERCENT
8259 8253 .9927
Моя проблема в том, как мне сослаться на первые две строки и сравнить их друг с другом? Если я не слишком обдумываю это, мне понадобятся два дополнительных оператора SELECT: 1 с предложением WHERE, ссылающимся на строку 1, и другой с ссылкой WHERE, ссылающейся на строку 2.
Как мне это сделать? Есть ли у меня два CTE?
В конце концов мне понадобится третий SELECT, разделяющий две строки и проверяющий на 10% допуск. Помогите, я в разборе паралича.