SQL-雪花-内部联接未按预期工作

SQL-雪花-内部联接未按预期工作,sql,inner-join,snowflake-cloud-data-platform,Sql,Inner Join,Snowflake Cloud Data Platform,我在snowflake中有一个类似这样的表ADS(每天都插入数据),注意第3行和第4行有重复的条目: 身份证件 报告日期 咔哒声 印象 1. 一月一日 20 400 1. 一月二日 25 600 1. 一月三日 80 900 1. 一月三日 80 900 2. 一月一日 30 500 2. 一月二日 55 650 2. 一月三日 90 950 您可以使用限定和行号() 请注意,按报告日期排序的订单不稳定(在平局的情况下)。我建议添加另一列进行排序,即tuple始终是唯一的 如果有平局的行是相同的

我在snowflake中有一个类似这样的表
ADS
(每天都插入数据),注意第3行和第4行有重复的条目:

身份证件 报告日期 咔哒声 印象 1. 一月一日 20 400 1. 一月二日 25 600 1. 一月三日 80 900 1. 一月三日 80 900 2. 一月一日 30 500 2. 一月二日 55 650 2. 一月三日 90 950
您可以使用
限定
行号()

请注意,
按报告日期排序的订单
不稳定(在平局的情况下)。我建议添加另一列进行排序,即tuple始终是唯一的


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

您可以使用
行号()
窗口功能:

select id, report_date, clicks, impresions from
(
 select id, report_date, clicks, impresions, row_number()over(partition by id order 
 by report_date desc) rnk from ADs
)t
where rn=1

谢谢您提供的详细信息。谢谢-我将澄清我的表中不存在列
,表中的最新条目不一定是我需要的行。我删除了第二个答案。误解了你的数据。然后row_number()窗口函数将完成这项工作。再次感谢你用如此详细和干净的信息提问。致以最良好的祝愿。谢谢-正如我在另一篇评论中提到的,我的表格中不存在列
-我将在我的问题中澄清这一点。@Daniel如果出现平局,将选择任意行。在提供的情况下,这并不重要,因为它们本质上是相同的。这应该很好-因为我是SQL新手,您能否就查询的最后一行如何工作给出一些背景信息?Qualife就像一个窗口函数的筛选子句。行编号根据每个ID创建编号,根据报告日期降序对输入进行排序。然后选择得到1的一个。
select id, report_date, clicks, impresions from
(
 select id, report_date, clicks, impresions, row_number()over(partition by id order 
 by report_date desc) rnk from ADs
)t
where rn=1