因此,我正在使用PostgreSQL DBMS,并且有以下查询:
Select "CustomerID",Sum("TotalDue") as Total
from "Bike Business"."SalesOrderHeader"
group by "CustomerID"
order by Total desc limit 1;
该查询将打印具有最大订单成本的人员的ID和最大成本的数量。但是在平局的情况下,两个或两个以上的人具有相同的最大订单成本,我希望查询也打印他们的ID和最大成本。我怎样才能做到这一点?
您可以为此使用窗口函数:
select "CustomerID", total
from (
Select "CustomerID",
Sum("TotalDue") as Total,
dense_rank() over (order by Sum("TotalDue") desc) as rnk
from "Bike Business"."SalesOrderHeader"
group by "CustomerID"
) t
where rnk = 1;
这可能会比带有子选择表或派生表的等效查询更快。
而且它还具有其他优势,您可以轻松获得第二或第三最高值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句