У меня есть таблица: "ID name c_counts f_counts"
и я хочу заказать всю запись sum(c_counts+f_counts)
но это не работает:
SELECT * FROM table ORDER BY sum(c_counts+f_counts) LIMIT 20;
У меня есть таблица: "ID name c_counts f_counts"
и я хочу заказать всю запись sum(c_counts+f_counts)
но это не работает:
SELECT * FROM table ORDER BY sum(c_counts+f_counts) LIMIT 20;
Не забывайте, что если вы смешиваете поля сгруппированы (то есть 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
Много возможностей!
Вот как вы это делаете
SELECT ID,NAME, (C_COUNTS+F_COUNTS) AS SUM_COUNTS
FROM TABLE
ORDER BY SUM_COUNTS LIMIT 20
Функция SUM будет содержать все строки, поэтому предложение order by
бесполезно, вместо этого вам придется использовать предложение group by
.
Вы можете попробовать следующее:
SELECT *
FROM table
ORDER BY (c_counts+f_counts)
LIMIT 20
Без предложения GROUP BY любое суммирование перевернет все строки в одну строку, поэтому ваш запрос действительно не будет работать. Если вы сгруппированы, скажем, именем и упорядочены по сумме (c_counts + f_counts), то вы можете получить некоторые полезные результаты. Но вам придется сгруппировать что-то.
Проблема, которую я вижу здесь, заключается в том, что "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 имеет правильное решение.