分组、平均的SQL子查询问题

标签 sql sql-server-2005

在 MS Transact SQL 中,假设我有一个这样的表(订单):

 Order Date       Order Total     Customer #
 09/30/2008       8.00            1
 09/15/2008       6.00            1
 09/01/2008       9.50            1
 09/01/2008       1.45            2
 09/16/2008       4.50            2
 09/17/2008       8.75            3
 09/18/2008       2.50            3

我需要的是:对于每个客户,最近两个订单的平均订单金额。所以对于客户#1,我应该得到 7.00(而不是 7.83)。

我已经盯着这个看了一个小时(在一个更大的问题中,我已经解决了),我想我的大脑已经卡住了。帮助解决一个简单的问题?

最佳答案

这应该使它

select avg(total), customer 
from orders o1 
where orderdate in 
  ( select top 2 date 
    from orders o2 
    where o2.customer = o1.customer 
    order by date desc )
group by customer

关于分组、平均的SQL子查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/153585/

相关文章:

sql-server - 更新查询被用户取消

sql - Oracle SQL 查询仅在一个进程中失败 : "ORA-01405: fetched column value is NULL"

sql - 如何避免隐式类型转换

MySQL,从同一个表中选择 2 个以上匹配项

sql - MySQL : return "0" & "1" rather than "false" & "true"

sql - 检索具有某些条件的所有 SP 的列表

sql-server-2005 - 以编程方式确定数据库上的可用空间?

sql - 数据库表的行和列的转换

sql-server-2005 - 如何从表中的列中删除默认值?

c# - 寻找 Web 应用程序的设计技巧以将 SQL 数据显示为图表