SQL 查询用最常见的替换多次出现
SQL query to replace multiple occurrences with the most frequent ones
我有一个 products
table,它有两种语言的产品描述,一种是英语,一种是其他语言。
比方说:
Product_Desc
Product_Desc_Alt
A
A1
A
A2
A
A1
A
A3
B
B1
B
B2
B
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
Product_Desc
CNT
A
3
B
2
C
1
我想用出现次数最多的 Product_Desc_Alt
次替换,
所以例如我希望输出为:
Product_Desc
Product_Desc_Alt
A
A1
A
A1
A
A1
A
A1
B
B2
B
B2
B
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
)
我有一个 products
table,它有两种语言的产品描述,一种是英语,一种是其他语言。
比方说:
Product_Desc | Product_Desc_Alt |
---|---|
A | A1 |
A | A2 |
A | A1 |
A | A3 |
B | B1 |
B | B2 |
B | 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
Product_Desc | CNT |
---|---|
A | 3 |
B | 2 |
C | 1 |
我想用出现次数最多的 Product_Desc_Alt
次替换,
所以例如我希望输出为:
Product_Desc | Product_Desc_Alt |
---|---|
A | A1 |
A | A1 |
A | A1 |
A | A1 |
B | B2 |
B | B2 |
B | 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
)