从表格中选择最大用户总和,作为最大用户?

问题描述

我有一张桌子

create table mock_sales
(
    first_name character varying,last_name character varying,amount integer
);

insert into mock_sales(first_name,last_name,amount) 
values('ted','mosby',100),('lily','aldrin',400),('ted',350),('barney','Stinson',180)

所需的输出

最高金额的人

泰德莫比 //泰德莫比总和= 450(100 + 350),这是最大的

我尝试过

Select first_name,last_name from mock_sales group by first_name,last_name where amount in (
select max(amount) from t
(select sum(amount) as amount from mock_sales as t group by first_name,last_name)

or 

select t.first_name,t.last_name from mock_sales where max(amount) == t.amount and t.amount in (
Select first-name,sum(amount) as amount from mock_sales as t group by first_name,last_name)

但是他们都给出了语法错误。任何帮助将不胜感激。

在合并2个查询的结果时遇到麻烦。

解决方法

因为您想要总和而不是最大值,所以请尝试以下方法:

SELECT first_name,last_name,SUM(amount) AS amount FROM mock_sales 
 GROUP BY first_name,last_name ORDER BY amount DESC LIMIT 1;
,

您可以仅对具有相同名字/姓氏的记录进行分组,对结果进行排序并仅保留第一行:

select first_name,sum(amount) total_amount
from mock_sales
group by first_name,last_name
order by total_amount desc
limit 1

如果您想允许平局,那就有些不同了。在Postgres中,您可以使用窗口功能:

select *
from (
    select first_name,sum(amount) total_amount,rank() over(order by sum(amount) desc) rn
    from mock_sales
    group by first_name,last_name
) t
where rn = 1