Подтвердить что ты не робот

Как запросить СУММ() в MySQL?

У меня есть таблица: "ID name c_counts f_counts"

и я хочу заказать всю запись sum(c_counts+f_counts) но это не работает:

SELECT * FROM table ORDER BY sum(c_counts+f_counts) LIMIT 20;

4b9b3361

Ответ 1

Не забывайте, что если вы смешиваете поля сгруппированы (то есть SUM) и негруппированные поля, вам нужно GROUP BY одним из негрупповых полей.

Попробуйте следующее:

SELECT SUM(something) AS fieldname
FROM tablename
ORDER BY fieldname

ИЛИ это:

SELECT Field1, SUM(something) AS Field2
FROM tablename
GROUP BY Field1
ORDER BY Field2

И вы всегда можете сделать производный запрос следующим образом:

SELECT
   f1, f2
FROM
    (
        SELECT SUM(x+y) as f1, foo as F2
        FROM tablename 
        GROUP BY f2
    ) as table1
ORDER BY 
    f1

Много возможностей!

Ответ 2

Вот как вы это делаете

SELECT ID,NAME, (C_COUNTS+F_COUNTS) AS SUM_COUNTS 
FROM TABLE 
ORDER BY SUM_COUNTS LIMIT 20

Функция SUM будет содержать все строки, поэтому предложение order by бесполезно, вместо этого вам придется использовать предложение group by.

Ответ 3

Вы можете попробовать следующее:

SELECT * 
FROM table 
ORDER BY (c_counts+f_counts) 
LIMIT 20

Ответ 4

Без предложения GROUP BY любое суммирование перевернет все строки в одну строку, поэтому ваш запрос действительно не будет работать. Если вы сгруппированы, скажем, именем и упорядочены по сумме (c_counts + f_counts), то вы можете получить некоторые полезные результаты. Но вам придется сгруппировать что-то.

Ответ 5

Проблема, которую я вижу здесь, заключается в том, что "sum" является агрегированной функцией.

во-первых, вам нужно исправить сам запрос.

Select sum(c_counts + f_counts) total, [column to group sums by]
from table
group by [column to group sums by]

то вы можете отсортировать его:

Select *
from (query above) a
order by total

EDIT: Но см. Сообщение от Вирата. Возможно, то, что вы хотите, это не сумма ваших полных полей над группой, а просто сумма этих полей для каждой записи. В этом случае Virat имеет правильное решение.