Расчет процента значений из массива 1 содержащихся в массиве 2
У меня есть таблица со следующей структурой:
client_id | order_id | items_current_order | items_next_order |
---|---|---|---|
905562 | 4254677 | {1, 2, 4} | {1} |
905562 | 4254645 | {1, 2, 5, 6} | {1, 6} |
create table orders (
client_id integer,
order_id varchar(10),
items_current_order varchar array,
items_next_order varchar array
);
INSERT INTO orders (client_id, order_id, items_current_order, items_next_order)
VALUES (905562, '4254677', '{1, 2, 4}', '{1}'),
(905562, '4254645', '{1, 2, 5, 6}', '{1,6}')
Мне нужно посчитать долю items из items_next_order содержащихся в items_current_order.
Так например для order_id = 4254645 доля должна быть 50%, так как только 2 айтема items_next_order из 4-х содержатся в items_current_order.
Пробовал посчитать количество (не долю) так:
SELECT
client_id ,
COUNT(1) AS count_values
FROM
(SELECT
client_id ,
unnest(items_next_order) AS value
FROM
orders
GROUP BY
1, 2) AS a
WHERE
value = ANY (SELECT unnest(items_current_order) FROM orders as rj WHERE rj.client_id = a.client_id )
GROUP BY
client_id