postgrehow使用SQL为窗口函数填充表中缺失的值


tbody> <<tr>
order_id 产品 国家
mb - 123面包我们
mb - 123牛奶
mb - 1256奶酪英国
mb - 1256番茄酱
mb - 1256牛奶

在PostgreSQL中,你可以使用MAX窗口函数,它允许你获得每个">order_id"分区。

SELECT order_id, Products, MAX(Country) OVER(PARTITION BY order_id) AS Country 
FROM tab

如果需要更新现有表,可以计算每个国家的最大值,然后应用JOIN operation inside theupdate '语句:

WITH cte AS (
SELECT order_id, Products, MAX(Country) OVER(PARTITION BY order_id) AS Country 
FROM tab
)
UPDATE tab 
SET Country = cte.Country
FROM cte
WHERE cte.order_id = tab.order_id AND cte.Products = tab.products
AND tab.Country IS NULL

点击这里查看演示。

最新更新