Mysql 求和函数上的最大函数

Mysql 求和函数上的最大函数,mysql,sql,Mysql,Sql,我正在mySQL中使用sakila DB。我需要提供2005年支付的最高金额的客户的姓名。这是家庭作业,我希望可以询问。我解决了这个查询的问题: SELECT first name, last name, SUM(amount) AS total FROM sakila.payment JOIN sakila.customer USING(customer_id) WHERE YEAR(payment_date)=2005 GROUP BY customer_id ORDER BY total

我正在mySQL中使用sakila DB。我需要提供2005年支付的最高金额的客户的姓名。这是家庭作业,我希望可以询问。我解决了这个查询的问题:

SELECT first name, last name, SUM(amount) AS total
FROM sakila.payment JOIN sakila.customer USING(customer_id)
WHERE YEAR(payment_date)=2005
GROUP BY customer_id
ORDER BY total DESC
LIMIT 1
我相信有一个更优雅的方法来解决这个问题。我不明白为什么这个查询不起作用:

SELECT first name, last name, MAX(total)
FROM     
(SELECT first name, last name, SUM(amount) AS total
FROM sakila.payment JOIN sakila.customer USING(customer_id)
WHERE YEAR(payment_date)=2005
GROUP BY customer_id) amounts;

感谢您的帮助。

第二个只会为您提供MAXtotal和随机名字&随机姓氏,因为group by位于内部查询p.S中。请将您的名字作为别名引用,或者将正确的字段名放在适当的位置,否则您的查询将无法真正运行

另外,我注意到,您的查询需要一个小的更正:

SELECT first_name,last_name, total 
FROM (
SELECT customer_id, SUM(amount) AS total
FROM sakila.payment JOIN sakila.customer USING(customer_id)
WHERE YEAR(payment_date)=2005
GROUP BY customer_id ) total_alias
INNER JOIN sakila.customer scu ON total_alias.customer_id=scu.customer_id
ORDER BY total DESC
LIMIT 1;
您正在通过以下方式返回组的名和姓:
group by中的结果要么应用函数SUM、MIN、MAX等,要么在group by语句中。如果不是这样,则查询失败或返回随机数据取决于查询结构和DBMS

感谢您的快速回复,为什么第二个查询错误?当您说它不工作时,什么不工作?在修复第一个查询的语法错误后,请继续使用第一个查询。这是正确的。