Я думаю, что вам нужен полный внешний вид, поскольку вы указали:
вам нужна одна строка для всех долларов продаж, когда не было продвижение по службе Одна строка для каждой ставки, когда продвижение было активным и total_dollars
Пример
with orders (order_id, user_id, ts, dollar_amount) as (
SELECT 1, 1, '2019-01-06', 23 UNION ALL
SELECT 2, 1, '2019-01-19', 18 UNION ALL
SELECT 2, 2, '2019-01-09', 12),
Promotions (Promotion_ID, user_ID, Promotion_rate, start_Ts, End_TS) as (
SELECT 1, 1, 0.1, '2019-01-03', '2019-01-08' UNION ALL
SELECT 2, 1, 0.15, '2019-01-28', '2019-02-05' UNION ALL
SELECT 3, 1, 0.05, '2019-09-02', '2019-09-10' UNION ALL
SELECT 4, 2, 0.1, '2019-01-03', '2019-01-08')
SELECT P.promotion_rate
, sum(O.Dollar_Amount) as Total_Dollars
FROM Promotions P
FULL OUTER JOIN Orders O
on O.TS between P.Start_TS and P.End_TS
GROUP BY P.promotion_rate
Результаты:
+----+----------------+---------------+
| | promotion_rate | Total_Dollars |
+----+----------------+---------------+
| 1 | NULL | 30 |
| 2 | 0,05 | NULL |
| 3 | 0,10 | 46 |
| 4 | 0,15 | NULL |
+----+----------------+---------------+
Изначально я включил промо-код;но я считаю, что вы хотите, чтобы идентификаторы 1,4 были объединены в 1 строку.
Поскольку некоторые записи могут быть не связаны с рекламой, скорость будет нулевой, и в таких ситуациях все записи будут объединены.