我正在使用 Snowflake 查询数据,其中一个表存在一些我无法控制的问题。
除了一条记录外,大多数记录有多个项目 ID 具有相同的项目描述。例如:
商品编号 | 物品描述 |
---|---|
1234 | 可口可乐原味 |
1234 | 可口可乐原味 |
1234 | 可口可乐组织 |
1234 | 可口可乐原味 |
我尝试加入此表以引入项目描述,但由于命名约定不同,结果是两条记录。如何创建查询来为每个唯一的商品 ID 选择最常见的商品描述?
您可以结合使用聚合和窗口函数。首先,计算每个项目 ID 的每个描述的出现次数。然后,使用窗口函数对这些出现次数进行排名。最后,为每个项目 ID 选择计数最高(排名 = 1)的描述:
WITH DescriptionCounts AS (
SELECT
ItemID,
ItemDescription,
COUNT(*) AS DescriptionCount
FROM
YourTable
GROUP BY
ItemID,
ItemDescription
), RankedDescriptions AS (
SELECT
ItemID,
ItemDescription,
RANK() OVER (PARTITION BY ItemID ORDER BY DescriptionCount DESC) AS DescriptionRank
FROM
DescriptionCounts
)
SELECT
ItemID,
ItemDescription
FROM
RankedDescriptions
WHERE
DescriptionRank = 1;