MySQL函数的最大函数

时间:2015-04-10 17:16:03

标签: 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 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;

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

第二个只是获得MAX(总数)和随机first_name& random last_name,因为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;

你们正在通过以下方式返回名字和姓氏: 组中的结果要么应用了一个函数(SUM,MIN,MAX等),要么在group by语句中。如果不是这种情况,查询将失败或返回随机数据(取决于查询结构和DBMS)