SELECT * FROM
(SELECT
day_of_week,
CASE WHEN day_of_week IN ('Monday','Tuesday','Wednesday','Thursday') THEN 'Weekday' ELSE 'Weekend' END AS Weekend,
name,
CASE
WHEN name like '%Extra Large%' THEN 'Extra Large'
WHEN name like '%Small%' or name like '%Medium%' or name like '%Large%' then SPLIT_PART(name, ' ', -1)
END AS Size,
CASE
WHEN name LIKE '%Extra Large%' THEN REPLACE(name, 'Extra Large', '')
WHEN name LIKE '%Large%' THEN REPLACE(name, 'Large', '')
WHEN name LIKE '%Medium%' THEN REPLACE(name, 'Medium', '')
WHEN name LIKE '%Small%' THEN REPLACE(name, 'Small', '')
END AS Product,
*
FROM
"daily_orders_product") T1
LEFT JOIN
(select
*,
row_number() over (PARTITION BY Size ORDER BY price ASC) AS cat_price
FROM
(SELECT distinct
CASE
WHEN name like '%Extra Large%' THEN 'Extra Large'
WHEN name like '%Small%' or name like '%Medium%' or name like '%Large%' then SPLIT_PART(name, ' ', -1)
END AS Size,
price
FROM
"daily_orders_product"
order by Size,price))T2
ON T1.Size = T2.Size
AND T1.price = T2.price
;