Я пишу простой хранилище данных, который позволит мне запрашивать таблицу для наблюдения периодических (скажем еженедельных) изменений в данных, а также изменений в изменении данных (например, изменение недели за неделю в еженедельной продаже) ,Как написать эти два запроса для простого хранилища данных, используя ANSI SQL?
В целях простоты я представлю очень упрощенные (почти тривиализированные) версии таблиц, которые я использую здесь. Таблица данных продаж является видом и имеет следующую структуру:
CREATE TABLE sales_data (
sales_time date NOT NULL,
sales_amt double NOT NULL
)
Для этого вопроса. Я оставил другие поля, которые вы ожидаете увидеть - например product_id, sales_person_id и т. Д. И т. Д., Поскольку они не имеют прямого отношения к этому вопросу. AFAICT, единственными полями, которые будут использоваться в запросе, являются поля sales_time и sales_amt (если только я не ошибаюсь).
У меня также есть дата размер таблица со следующей структурой:
CREATE TABLE date_dimension (
id integer NOT NULL,
datestamp date NOT NULL,
day_part integer NOT NULL,
week_part integer NOT NULL,
month_part integer NOT NULL,
qtr_part integer NOT NULL,
year_part integer NOT NULL,
);
, какой раздел даты в диапазоне отчетности.
мне нужно писать запросы, которые позволят мне сделать следующее:
Верните изменения в недели на неделю sales_amt в течение определенного периода времени. Например, изменение между продажами сегодня и продажами N дней назад - где N - положительное целое число (N = 7 в этом случае).
возвращение изменение на изменение sales_amt на указанный период. Ибо в (1). мы подсчитали недельную неделю. Теперь мы хотим знать, как это изменение отличается от (неделя за неделю), рассчитанная на прошлой неделе.
Я застрял, однако, на этом этапе, поскольку SQL - это мое самое слабое умение. Я был бы признателен, если бы мастер SQL мог объяснить, как я могу писать эти запросы агрегированным DB (то есть с использованием ANSI SQL).
Это поможет, если вы разместите подробный ERD. Ваш стол фактов кажется немного необычным. Что такое строка в таблице фактов? Одна транзакция или какая-то кумулятивная ценность? Предположим, мы продаем один шоколадный бар в 2 часа дня за 2 доллара и еще один в 3 часа дня за 2 доллара - каково изменение в продажах, которое должно означать? –