SUM в запросе

warobushek

Новичок
SUM в запросе

есть следующая таблица
табл1
id_op
text
number


хочу выбрать следующую таблицу
id_op, text, сумма(number)

Для этого пишу запрос
SELECT id_op, text, SUM(number) FROM табл1

Он возвращает только одну строку. Чего не хватает в этом запросе, чтобы он выводил каждую запись с указанием суммы всех number?
 

QQQ

Новичок
Код:
SELECT id_op, text, j.sum
FROM table
LEFT JOIN (

    SELECT SUM(number) AS sum FROM table

) AS j ON 1
можно попробовать вот так, но(!) я не уверен, как тут сработает оптимизатор мускула. если он действительно для каждой колонки будет делать выборку (что вряд ли конечно) - то это не вариант

короче потестировать надо на реальных данных
 

Lakr

Новичок
как человека не опытного заинтересовало сравнение скорости обработки данных просчёта суммы прямо в мускле банальным запросом
$test=mysql_query("SELECT SUM(number) FROM test_table");
и в пхп (через банальный цыкл)
$sum=0;
$test=mysql_query("SELECT number FROM test_table");
while ($table=mysql_fetch_row($test))
{ $sum=$sum+$table[0];}

и вывод результата на екран в обоих случаях с помощью не хитрых
$startTime=microtime();
код подсчёта один из вышеуказаных
$endTime=microtime();
ну и ехо с их разницей
вот собственно результаты прогона 10, 100, 1000, 10000 и 100000 записей (естественно разных)в таблице по цыклу в 100 раз.
Средняя скорость подсчёта обоих вариантов при 10 записях одинаковое около 0.0004
при 100 записях мускл 0,00049 цыкл 0,00062
при 1000 записях мускл 0,00096 цыкл 0,0029
при 10000 записях мускл 0,0058 цыкл 0,026
и наконец
при 100000 записях мускл 0,054 цыкл 0,26
Многим это покажется ессесна очевидным, как и мне, просто хотелось так сказать наглядно увидеть, поганять и другим показать разницу.
 

Вурдалак

Продвинутый новичок
Понятное дело, что тут предлагалось суммировать на стороне PHP, потому что он и так делает выборку таблицы.
 

Gas

может по одной?
Ну можно ещё таким запросом:
Код:
SELECT id_op, text, SUM(number) AS summ FROM табл1 GROUP BY id_op WITH ROLLUP;
там где id_op будет пустое, там в summ и будет полная сумма
 
Сверху