WITH
colored_products AS (
SELECT
sku,
regexp_extract(p.desc, '(.+) \(([a-z]+)\)', 1) as product,
regexp_extract(p.desc, '.+ \(([a-z]+)\)', 1) as color
FROM products p
WHERE regexp_matches(p.desc, '.+ \([a-z]+\)')
),
colored_orders_by_day AS (
SELECT
o.orderid,
strftime('%Y-%m-%d', o.ordered) as day,
cp.sku,
cp.product,
cp.color,
o.customerid,
o.ordered
FROM orders o
JOIN orders_items oi ON oi.orderid = o.orderid
JOIN colored_products cp ON cp.sku = oi.sku
),
same_day_orders AS (
SELECT
o1.day,
o1.product,
c1.name as name1,
c1.phone as phone1,
o1.color as color1,
c2.name as name2,
c2.phone as phone2,
o2.color as color2,
abs(date_diff('minute', o1.ordered, o2.ordered)) as delta,
o1.ordered as ordered1,
o2.ordered as ordered2
FROM colored_orders_by_day o1
JOIN colored_orders_by_day o2 ON o1.day = o2.day
JOIN customers c1 ON c1.customerid = o1.customerid
JOIN customers c2 ON c2.customerid = o2.customerid
WHERE o1.customerid < o2.customerid
AND o1.product = o2.product
AND o1.color != o2.color
)
SELECT name1, phone1, name2, phone2, delta
FROM same_day_orders
WHERE ${answer6[0].name} IN (name1, name2)
ORDER BY delta ASC