Snowflake SQL 代码仅显示具有重复 ID 的项目的第二条记录
Snowflake SQL code to show only second record for items with duplicate ID
我正在努力思考 SQL 并使用 Snowflake 作为测试平台来执行此操作。我有一个 table 的产品有多个针对它们的评论。我正在尝试构造一个查询以仅显示具有 2 条或更多评论的产品,然后仅显示第二条评论。正如我所说,这只是我试图更好地理解 SQL,所以选择第二条评论是一个随机问题。 table 由 4 列组成。 1 是产品 ID,2 是产品名称,3 是评论,4 是评论发布日期。
在此先感谢您的帮助。
您使用 row_number()
进行此类查询:
select t.*
from (select t.*,
row_number() over (partition by product_id order by date_review asc) as seqnum
from t
) t
where seqnum = 2;
您可以使用 ROW_NUMBER()
之类的窗口函数来进行编号分组,例如:
WITH Review_Sequence (
SELECT r.*,
ROW_NUMBER() OVER (PARTITION BY Product_ID ORDER BY Review_Date) Review_No
FROM Reviews r
)
SELECT * FROM Review_Sequence WHERE Review_No = 2
我正在努力思考 SQL 并使用 Snowflake 作为测试平台来执行此操作。我有一个 table 的产品有多个针对它们的评论。我正在尝试构造一个查询以仅显示具有 2 条或更多评论的产品,然后仅显示第二条评论。正如我所说,这只是我试图更好地理解 SQL,所以选择第二条评论是一个随机问题。 table 由 4 列组成。 1 是产品 ID,2 是产品名称,3 是评论,4 是评论发布日期。
在此先感谢您的帮助。
您使用 row_number()
进行此类查询:
select t.*
from (select t.*,
row_number() over (partition by product_id order by date_review asc) as seqnum
from t
) t
where seqnum = 2;
您可以使用 ROW_NUMBER()
之类的窗口函数来进行编号分组,例如:
WITH Review_Sequence (
SELECT r.*,
ROW_NUMBER() OVER (PARTITION BY Product_ID ORDER BY Review_Date) Review_No
FROM Reviews r
)
SELECT * FROM Review_Sequence WHERE Review_No = 2