gpt4 book ai didi

SQL - 雪花 - 内部连接没有按预期工作

转载 作者:行者123 更新时间:2023-12-04 01:02:11 27 4
gpt4 key购买 nike

我有一张 table ADS像这样在雪花中(每天插入数据),请注意第 3 行和第 4 行有重复的条目:

<表类="s-表"><头>身份证REPORT_DATE点击次数印象<正文>11月1日2040011月2日2560011月03日8090011月03日8090021月1日3050021月2日5565021月03日90950

我想根据 ID 选择所有条目最大 REPORT_DATE - 本质上我想知道 CLICKS 的最新数量和 IMPRESSIONS对于每个 ID :

<表类="s-表"><头>身份证REPORT_DATE点击次数印象<正文>11月03日8090021月03日90950

此查询成功地为我提供了最大值 DATE对于每个 ID :

SELECT
MAX(REPORT_DATE),
ID
FROM ADS
GROUP BY
ID;

结果:

<表类="s-表"><头>身份证MAX(REPORT_DATE)<正文>11月03日21月03日

但是,当我尝试进行内部联接时,会出现重复项:

SELECT 
a.ID,
a.REPORT_DATE,
a.CLICKS,
a.IMPRESSIONS
FROM ADS a
INNER JOIN (
SELECT
MAX(REPORT_DATE),
ID
FROM ADS
GROUP BY
ID
) b
ON a.ID = b.ID
AND a.REPORT_DATE = b.REPORT_DATE;

结果:

<表类="s-表"><头>身份证REPORT_DATE点击次数印象<正文>11月03日8090011月03日8090021月03日90950

我如何构造我的查询以删除这些重复项?

最佳答案

您可以使用 QUALIFYROW_NUMBER():

SELECT a.ID,a.REPORT_DATE,a.CLICKS,a.IMPRESSIONS
FROM ADS a
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY REPORT_DATE DESC) = 1;

请注意 ORDER BY REPORT_DATE 不稳定(如果出现平局)。我建议添加另一列用于排序,即元组始终是唯一的。

如果有平局的行相同,那实际上不是问题。

关于SQL - 雪花 - 内部连接没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67909377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com