2010-01-16 11 views
1
select sum(value) as 'Value',max(value) 
from table_name where sum(value)=max(sum(value)) group by id_name; 

Ошибка: Недопустимое использование групповой функции (ErrorNr 1111).MySql Sql MAX и SUM ошибка

Любая идея?

Спасибо.

+0

В 'тах (сумма (значение)) 'вызывает проблему Лем? Что вы пытаетесь получить? – Rippo

+0

Я хочу выбрать только записи, имеющие сумму (значение) максимум. – Emanuel

ответ

4

Можете ли вы, возможно, попробовать

SELECT Value, MXValue 
FROM (
     select sum(value) as 'Value',max(value) MXValue 
     from table_name 
     group by id_name 
    ) as t1 
order by value desc 
LIMIT 0,1 

От MySQL Forums :: General :: selecting MAX(SUM())

Или вы могли бы попробовать что-то вроде

SELECT id_name, 
     Value 
FROM (
      select id_name,sum(value) as 'Value' 
      from table_name 
      group by id_name 
     ) t 
WHERE Value = (
        SELECT TOP 1 SUM(Value) Mx 
        FROM table_name 
        GROUP BY id_name 
        ORDER BY SUM(Value) DESC 
       ) 

Или даже с внутренним соединением

SELECT id_name, 
     Value 
FROM (
      select id_name,sum(value) as Value 
      from table_name 
      group by id_name 
     ) t INNER JOIN 
     (
      SELECT TOP 1 SUM(Value) Mx 
      FROM table_name 
      GROUP BY id_name 
      ORDER BY SUM(Value) DESC 
     ) m ON Value = Mx 
0

Часть =max(sum(value)) требует сравнения результатов двух сгруппированных выборок, а не только одного. (Максимальная сумма.)

Давайте вернемся назад, хотя: какую информацию вы на самом деле пытаетесь получить? Поскольку сумма значений в таблице уникальна; нет минимума или максимума (или, в зависимости от вашей точки зрения, есть - значение - это его собственный минимум и максимум). Вам нужно будет применить некоторые дополнительные критерии, чтобы результаты были значимыми, и при этом вам, вероятно, нужно будет делать соединение или подзапрос с некоторыми критериями.