使用组合总和和最大值查找最大值

时间:2013-07-18 19:28:21

标签: mysql

示例数据

+----+------------+-------+------------+
| 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错误(无效使用组功能)

有办法吗?

4 个答案:

答案 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)

您在问题中最初写的查询可能是最好的方法。我不明白这会有什么问题。这里不需要使用子查询。