[英]SQL query to replace multiple occurrences with the most frequent ones
我有一个products
表,其中有两种语言的产品描述,一种是英语,一种是另一种语言。
比方说:
产品描述 | Product_Desc_Alt |
---|---|
一种 | A1 |
一种 | A2 |
一种 | A1 |
一种 | A3 |
乙 | B1 |
乙 | B2 |
乙 | B2 |
C | C1 |
如果我执行GROUP BY
语句,则同一产品会出现多种替代语言。 那么,让我们说:
SELECT Product_Desc, COUNT(DISTINCT Product_Desc_Alt) AS CNT
FROM products
GROUP BY Product_Desc
ORDER BY CNT DESC
产品描述 | 碳纳米管 |
---|---|
一种 | 3个 |
乙 | 2个 |
C | 1个 |
我想用最频繁出现的Product_Desc_Alt
替换,所以例如我希望 output 是:
产品描述 | Product_Desc_Alt |
---|---|
一种 | A1 |
一种 | A1 |
一种 | A1 |
一种 | A1 |
乙 | B2 |
乙 | B2 |
乙 | B2 |
C | C1 |
显然,如果产品只有一个更改语言描述,请保留那个。
可能有很多方法可以做到这一点,但我想不出一个。
我正在使用 Azure Databricks,所以这也可能发生在 PySpark 上,但我有兴趣以 SQL 的方式进行。
非常感谢!
你是这个意思吗?
UPDATE products
SET Product_Desc_Alt = (
SELECT TOP 1 Product_Desc_Alt
FROM products P2
WHERE P2.Product_Desc = products.Product_Desc
GROUP BY Product_Desc_Alt
ORDER BY COUNT(*) DESC
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.