SQL Я хочу выяснить, как получить продажи 10 дней для каждого продукта и в каждой группе - PullRequest
0 голосов
/ 09 марта 2020

У меня есть SQL Серверная таблица T1, в которой есть заказы по product_id, бренду и размеру на каждый день.

T1:

+------------+-------+------+----------+--------+
| product_id | Brand | Size |   Date   | Orders |
+------------+-------+------+----------+--------+
|          1 |     1 | 11   | 10/18/18 |      1 |
|          1 |     1 | 6    | 10/18/18 |      2 |
|          1 |     1 | 10   | 10/18/18 |      1 |
|          1 |     1 | 7    | 10/18/18 |      3 |
|          1 |     1 | 8.5  | 10/18/18 |      5 |
|          1 |     1 | 9.5  | 10/18/18 |      2 |
|          2 |     1 | 8    | 10/19/18 |      3 |
|          2 |     1 | 7    | 10/19/18 |      6 |
|          2 |     1 | 9    | 10/19/18 |      2 |
|          3 |     2 | 5    | 10/19/18 |     23 |
|          3 |     2 | 6    | 10/19/18 |      6 |
|          3 |     2 | 10   | 10/19/18 |      7 |
+------------+-------+------+----------+--------+

I также есть таблица T2, в которой указана дата запуска для каждого product_id. У product_id может быть более одной даты запуска, что означает, что он «пополнен».

T2:

+------------+-------------+
| product_id | launch_date |
+------------+-------------+
|          1 | 8/18/18     |
|          1 | 10/18/18    |
|          2 | 10/18/18    |
|          3 | 4/18/18     |
+------------+-------------+

Моя цель - создать таблицу, которая просто первые 10 дней заказов в каждую дату запуска (для каждого product_id, бренда и размера). Таким образом, если дата запуска для продукта 1 - 18.08.18 и 18.10.18, то мне нужны ежедневные заказы с 18.08.88 по 28.08.18 и с 18.10.18.10 по 28.10. /18.

Как мне go создать эту таблицу?

Пример вывода:

+------------+-------+------+----------+--------+
| product_id | Brand | Size |   Date   | Orders |
+------------+-------+------+----------+--------+
| 1          |     1 | 11   | 10/18/18 |      1 |
| 1          |     1 | 6    | 10/18/18 |      2 |
| 1          |     1 | 10   | 10/18/18 |      1 |
| 1          |     1 | 7    | 10/18/18 |      3 |
| 1          |     1 | 8.5  | 10/18/18 |      5 |
| 1          |     1 | 9.5  | 10/18/18 |      2 |
| …          |       |      |          |        |
| 1          |     1 | 11   | 10/22/18 |      4 |
| 1          |     1 | 6    | 10/22/18 |      6 |
| 1          |     1 | 10   | 10/22/18 |      2 |
| 1          |     1 | 7    | 10/22/18 |      2 |
| 1          |     1 | 8.5  | 10/22/18 |      2 |
| 1          |     1 | 9.5  | 10/22/18 |      5 |
| …          |       |      |          |        |
| 1          |     1 | 11   | 10/28/18 |      7 |
| 1          |     1 | 6    | 10/28/18 |      4 |
| 1          |     1 | 10   | 10/28/18 |      2 |
| 1          |     1 | 7    | 10/28/18 |      2 |
| 1          |     1 | 8.5  | 10/28/18 |      8 |
| 1          |     1 | 9.5  | 10/28/18 |      7 |
| …          |       |      |          |        |
| 2          |     1 | 8    | 10/19/18 |      3 |
| 2          |     1 | 7    | 10/19/18 |      6 |
| 2          |     1 | 9    | 10/19/18 |      2 |
| 3          |     2 | 5    | 10/19/18 |     23 |
| 3          |     2 | 6    | 10/19/18 |      6 |
| 3          |     2 | 10   | 10/19/18 |      7 |
+------------+-------+------+----------+--------+

Спасибо!


РЕДАКТИРОВАТЬ: включая то, что я пробовал до сих пор:

Мой мыслительный процесс состоит в том, чтобы попытаться создать, чтобы присоединиться к launch_date, а затем создать столбец, который представляет собой количество дней между датой запуска и датой заказа. Тогда я могу просто отфильтровать, ГДЕ этот столбец меньше или равен 10.

Это запрос, который я использую:

with temp as (
        select
            t1.product_id, t1.brand, t1.size, t1.date, t1.orders, t2.launch_date
        from t1
        left join t2 on t1.product_id = t2.product_id and t1.order_date = t2.order_date 
        )


    select product_id,
           brand,
           size,
           size,
           date,
           orders,
           launch_date
        from temp
        ;

Чтобы мои рассуждения работали, я бы необходимо заполнить launch_date вперед, где бы оно ни было. Я не уверен, как это сделать. Вот вывод, который у меня есть до сих пор:

+------------+-------+------+----------+--------+-------------+
| product_id | Brand | Size |   Date   | Orders | launch_date |
+------------+-------+------+----------+--------+-------------+
| 1          |     1 | 11   | 10/18/18 |      1 | 10/18/18    |
| 1          |     1 | 6    | 10/18/18 |      2 | 10/18/18    |
| 1          |     1 | 10   | 10/18/18 |      1 | 10/18/18    |
| 1          |     1 | 7    | 10/18/18 |      3 | 10/18/18    |
| 1          |     1 | 8.5  | 10/18/18 |      5 | 10/18/18    |
| 1          |     1 | 9.5  | 10/18/18 |      2 | 10/18/18    |
| …          |       |      |          |        |             |
| 1          |     1 | 11   | 10/22/18 |      4 | NULL        |
| 1          |     1 | 6    | 10/22/18 |      6 | NULL        |
| 1          |     1 | 10   | 10/22/18 |      2 | NULL        |
| 1          |     1 | 7    | 10/22/18 |      2 | NULL        |
| 1          |     1 | 8.5  | 10/22/18 |      2 | NULL        |
| 1          |     1 | 9.5  | 10/22/18 |      5 | NULL        |
| …          |       |      |          |        |             |
| 1          |     1 | 11   | 10/28/18 |      7 | NULL        |
| 1          |     1 | 6    | 10/28/18 |      4 | NULL        |
| 1          |     1 | 10   | 10/28/18 |      2 | NULL        |
| 1          |     1 | 7    | 10/28/18 |      2 | NULL        |
| 1          |     1 | 8.5  | 10/28/18 |      8 | NULL        |
| 1          |     1 | 9.5  | 10/28/18 |      7 | NULL        |
| …          |       |      |          |        |             |
| 2          |     1 | 8    | 10/19/18 |      3 | 10/18/18    |
| 2          |     1 | 7    | 10/19/18 |      6 | 10/18/18    |
| 2          |     1 | 9    | 10/19/18 |      2 | 10/18/18    |
| 3          |     2 | 5    | 10/19/18 |     23 | 10/18/18    |
| 3          |     2 | 6    | 10/19/18 |      6 | 10/18/18    |
| 3          |     2 | 10   | 10/19/18 |      7 | 10/18/18    |
+------------+-------+------+----------+--------+-------------+

Если я смогу заполнить launch_date, где бы оно ни было, быть NULL, чтобы быть самой последней launch_date этого product_id, тогда я смогу создать столбец для вычтите даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...