Я работаю над проблемами макета SQL, чтобы углубить свои знания.У меня есть пример с игрушкой, и я пытаюсь решить каждую из проблем, с которыми сталкиваюсь.
Вот схема БД.
users (
user_id INT PRIMARY KEY
, first_name VARCHAR(255)
, last_name VARCHAR(255)
, date_created DATE
, email VARCHAR(255)
)
orders (
order_id INT PRIMARY KEY
, user_id INT
, date_created DATE
, order_value FLOAT
, city_id INT
);
city (
city_id INT PRIMARY KEY
, city_name VARCHAR(255)
, country_id INT
);
country (
country_id INT PRIMARY KEY
, country_name VARCHAR(255)
, currency_code VARCHAR(255)
);
Вот мое частичное решение проблемы.Я не могу понять, как я могу написать запрос, чтобы преобразовать ДАТУ в недели и получить итоговую сумму?
(3) Найдите еженедельный подсчет заказов для города Лондона за последние 8 недель, а также кумулятивный итог.
Желаемый результат: [week_start, order_count, cuml_order_count]
Код:
SELECT
COUNT(order_id),
SUM(order_id) OVER(ORDER BY user_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Summand,
city_name
FROM
orders
WHERE
date_created >= DATEADD(day, -56, GETDATE())
AND city_name = 'London'
Любые решения приветствуются.Я застрял, как сделать правильный подсчет и принять во внимание недели, кумулятивный итог по лондонскому делу.
PS Воспроизводимый пример можно найти здесь http://sqlfiddle.com/#!17/fcf7b