示例数据
+----+------------+-------+------------+
| ID | first_name | sales | sale_date |
+----+------------+-------+------------+
| 1 | Lindsey | 32.02 | 2007-03-12 |
| 2 | Nicole | 26.53 | 2007-03-12 |
| 3 | Britney | 11.25 | 2007-03-12 |
| 4 | Ashley | 18.96 | 2007-03-12 |
| 5 | Lindsey | 9.16 | 2007-03-11 |
| 6 | Nicole | 1.52 | 2007-03-11 |
| 7 | Britney | 43.21 | 2007-03-11 |
| 8 | Ashley | 8.05 | 2007-03-11 |
| 9 | Lindsey | 17.62 | 2007-03-10 |
| 10 | Nicole | 24.19 | 2007-03-10 |
| 11 | Britney | 3.40 | 2007-03-10 |
| 12 | Ashley | 15.21 | 2007-03-10 |
| 13 | Lindsey | 0.00 | 2007-03-09 |
| 14 | Nicole | 31.99 | 2007-03-09 |
+----+------------+-------+------------+
我试图找到这个女孩中最大的总销售额
我可以使用此查询找到最大的总销售额
select first_name, sum(sales) as total
from cookie_sales
group by first_name
order by total desc limit 1;
我想知道有没有办法使用聚合max
函数来找到相同的值
如果我使用这样的东西
select first_name, max(sum(sales)) from cookie_sales group by first_name;
我将得到1111 Mysql错误(无效使用组功能)
有办法吗?
答案 0 :(得分:0)
您可以尝试创建一个视图,然后尝试使用MAX。像这样:
CREATE VIEW sales_sums AS
select first_name, sum(sales) as total
from cookie_sales
group by first_name
order by total desc limit 1;
SELECT first_name, MAX(total ) AS max_total
FROM sales_sums
GROUP BY first_name
答案 1 :(得分:0)
您可以这样使用MAX功能:
SELECT MAX(sum_sales)
FROM (
SELECT first_name, SUM(sales) sum_sales
FROM cookie_sales
GROUP BY first_name
) s
但是如果你还需要获得first_name,那么这个查询会比你原来的查询复杂一点。
答案 2 :(得分:0)
有办法;你需要使用最近足以支持子查询的MySQL版本(应该是5.0或更新的版本):
SELECT first_name, MAX(total) FROM
(SELECT first_name, SUM(sales) AS total
FROM cookie_sales
GROUP BY first_name
ORDER BY total DESC) sum_query
GROUP BY first_name
LIMIT 0, 1;
答案 3 :(得分:0)
您在问题中最初写的查询可能是最好的方法。我不明白这会有什么问题。这里不需要使用子查询。