SQL查询汇总的最大值

时间:2016-06-18 19:07:44

标签: sql postgresql

我目前正在学习SQL,我需要执行一些SQL查询。我无法实现一个特定的查询。

  

哪些客户拥有(完全)最昂贵的订单?

必须返回同一客户的所有订单的

customeridtotal value作为结果。

表格是:

Salesorderheader

salesorderid (int)   customerid (int)   totaldue (double)  
       1                 32000            3.20000  

我使用的数据库系统是Postgresql。我到目前为止的查询是:

SELECT totaldue, customerid 
FROM salesorderheader   
WHERE totaldue = (SELECT max(totaldue) FROM salesorderheader);

此查询错误,因为必须返回标记为total_value的新值(同一客户的所有订单的总值)或类似内容。

我知道SQL函数sum()必须与GROUP BY customerid)结合使用,但到目前为止我未能实现正确的查询。

感谢您的时间。

注意:如果我违反任何网站规则或此帖子重复,请立即让我立即删除此帖子

Sample for table

enter image description here

2 个答案:

答案 0 :(得分:1)

这给了客户最大的开支:

SELECT distinct max(totaldue) over (partition by customerid),customerid 
FROM salesorderheader
order by 1 desc 
;

这显示了所有人之间浪费最多的客户:

select sum(totaldue) over (partition by customerid),customerid 
    FROM salesorderheader
    order by 1 desc 
limit 1
    ;

答案 1 :(得分:1)

选择前1名customer_id,sum(total_due)为总数

进入#top

来自salesorderheader的

按customer_id分组

按sum(total_due)desc排序;

从#top t

中选择*

内部联盟salesorderheader soh

on soh.customer_id = t.customerid;

drop table #top;

我为格式化道歉,我在移动设备上