Для начала я достаточно знаю, чтобы попасть в беду. Я работаю над написанием запроса для системы AS / 400. У меня есть файл, который содержит дату начала и дату окончания. Что я хочу сделать, это создать запрос, который может подсчитать, сколько позиций было открыто за диапазон дат. (для моего приложения открытый определяется как: DATE > START_DATE
И (DATE <= END_DATE OR END_DATE = '0'
)). Я могу заставить это работать для ручной установки «ДАТЫ», но я пытаюсь go назад и исторически вытаскивать эту информацию. У меня проблемы с запуском этого запроса к списку дат. Я хочу ввести исторический интервал (скажем, CURRENT_DATE - 5
) и вывести:
Date Open
20200206 30,000
20200207 31,000
20200210 29,675
20200211 31,375
20200212 32,000
Что я использую для запроса «один день за раз»:
SELECT
COUNT(*)
FROM
MYFILE
WHERE
START_DATE < '20200210'
AND (
END_DATE >= '20200210'
OR END_DATE = '0'
)
Это прекрасно работает, но занимает много времени. Отсюда я понятия не имею, как перейти к желаемому результату ... или даже если это возможно ... но это ускорит процесс для меня. Заранее спасибо.
PS Любая помощь приветствуется, если вы знаете, как выполнить sh в mySQL et c. Поделись, пожалуйста. Я могу взять это и использовать с точки зрения того, чтобы заставить его работать специально для AS / 400. Вот как я добрался до того места, где я сейчас нахожусь.
**************** Редактировать для уточнения 1. Текущий код Предоставлен код текущего дня это все что у меня есть. Я не знаю, с чего начать то, что я прошу. 2. Пример данных:
Line Item START_DATE END_DATE
1 20200206 20200210
2 20200207 20200210
3 20200207 20200207
Ожидаемый результат:
DATE COUNT
20200205 0
20200206 0
20200207 1
20200210 2
20200211 0
СУБД Я обновил тег для включения DB2. 5. Я не верю, что GROUP BY сработает.
По сути, я ищу, чтобы это рассчитывалось в итеративном стиле. Исходя из моего питона / java фона, это имеет смысл для меня. Я не ищу все, что было открыто 5 дней go, я хочу начать 5 дней go и рассчитать, сколько позиций было открыто каждый из этих 5 дней. Если это действительно возможно с GROUP, пожалуйста, опишите и покажите мне ошибку моих способов. А пока я начну возиться с группировкой с этой целью.