我有一张表格,描述了产品的销售地点,如下:
产品 | 位置 |
---|---|
A | 1,2,3 |
B | 2 |
C | 7,8,9,10 |
D | 2,3,4 |
E | 7,8,9 |
我想获得在 hive sql 中匹配两个或更多销售位置的产品
预期结果:
A,D
C,E
positions_exploded
我在 postgres 中尝试过,因为我没有配置单元,但是我认为你需要更改配置单元的一些语法,你可以像这个示例
所示那样爆炸WITH positions_exploded AS (
SELECT
product,
unnest(position) AS pos
FROM
product_position
)
,
matched_products AS (
SELECT
p1.product AS product1,
p2.product AS product2,
COUNT(*) AS common_positions
FROM
positions_exploded p1
JOIN
positions_exploded p2
ON
p1.pos = p2.pos AND p1.product < p2.product
GROUP BY
p1.product, p2.product
HAVING
COUNT(*) >= 2
)
SELECT
product1,
product2
FROM
matched_products;
输出
产品1 | 产品2 |
---|---|
A | D |
C | E |
您还可以用逗号分隔值连接输出,例如
STRING_AGG(product1 || ',' || product2, ', ') AS product_pairs