当前位置:  开发笔记 > 数据库 > 正文

用于查找表中代表性行的SQL查询

如何解决《用于查找表中代表性行的SQL查询》经验,为你挑选了1个好方法。

假设我有一个这样的支付表:

PaymentID INT,CustomerID INT,Value INT,PaidOn DATE

我想针对每个客户的最高付款运行查询.这是否可以使用单个SQL查询,以避免挖掘我不感兴趣的每一行 - 或者更糟糕的是,为每个客户运行查询?

我到目前为止所提出的最好的是:

SELECT CustomerID,MAX(Value)FROM Payments GROUP BY CustomerID;

但这并没有给我找到的行的PaymentId或PaidOn值.



1> Tony Andrews..:
select PaymentID, CustomerID, Value, PaidOn
from payments
where (customerID, value) in
( select customerID, max(value)
  from payments 
  group by customerID
);

请注意,如果每个客户有多个具有最大值的付款,则每个客户可以返回多行.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有