Sql 为什么我在使用partition by而不是group by+partition by时会获得更多记录?
作为一名新来者,我正在处理AdventureWorks2014数据库,我试图为每位客户获得最新的3份订单Sql 为什么我在使用partition by而不是group by+partition by时会获得更多记录?,sql,sql-server,Sql,Sql Server,作为一名新来者,我正在处理AdventureWorks2014数据库,我试图为每位客户获得最新的3份订单 select CustomerID, OrderDate from (select row_number() over(partition by CustomerID order by OrderDate desc) as rownumber, CustomerID, OrderDate
select CustomerID,
OrderDate from
(select row_number() over(partition by CustomerID
order by OrderDate desc) as rownumber,
CustomerID,
OrderDate
from sales.SalesOrderHeader) as x
where rownumber <=3
这个查询的结果是28.586行。之后,我尝试在同一个查询中使用GROUPBY
select CustomerID,
OrderDate from
(select row_number() over(partition by CustomerID order by
OrderDate desc) as rownumber,
CustomerID,
OrderDate
from sales.SalesOrderHeader) as x
where rownumber <=3
GROUP BY CustomerID,OrderDate
但是包含GROUPBY运算符的查询结果是28.575行。我检查了第一个和最后一个客户,结果都是一样的。
现在问题来了;这是什么原因造成的?为什么GROUP BY子句会减少结果中显示的总行数?哪个查询会给出真正的结果?因为有些订单的日期相同。
您可以通过添加Count1>1来查询GROUPBY来找到它您可以用文本而不是屏幕截图发布SQL吗?它可能有助于其他人阅读和分析。为什么不将sql作为文本发布?我猜您有一个翻倍的记录,可以使用group by删除该记录。下面是group by删除记录的原因