yarhosting
@yarhosting
Заказывайте программинг: PHP,SQL, JS,jQuery,Joomla

Как посчитать сумму и количество строк одним запросом SELECT ... GROUP BY...?

Есть запрос
SELECT count(id) `count`, sum(`sum`) `sum` FROM t GROUP BY manager_id ORDER BY ... LIMIT ...


Выдает, например, строки
1, 5
8, 0
2, 10

Хочу вывести табличку так:

1, 5
8, 0
2, 10

----
ИТОГО: строк 3, сумма 15

Как посчитать сумму и количество не в цикле одним запросом?

Количество строк и сумму я считаю так:
$query1=preg_replace('/SELECT .*?FROM/ius','SELECT COUNT(*) FROM',$query);
			$q = $cdb->query($query1);
			$c=$q->rowCount();

			$query1=preg_replace('/SELECT .*?FROM/ius','SELECT SUM(`sum`) FROM',$query);
			$query1=preg_replace('/GROUP BY.*/ius','',$query1);
			$q = $cdb->query($query1);
			$sum=$q->fetchColumn();


Не считаю в цикле, потому что идет разбивка на страницы через LIMIT
Использую preg_replace - для того, чтобы быстро копировать код в другую часть проекта, где нужно так же посчитать итоговые суммы и количество записей

Но хотелось бы не делать два запроса, а справиться одним

Что то вроде этого, но тут сумма берется только с первой строки
$query1=preg_replace('/SELECT .*?FROM/ius','SELECT SUM(`sum`) FROM',$query);
			$q = $cdb->query($query1);
			$sum=$q->fetchColumn();
			$c=$q->rowCount();
  • Вопрос задан
  • 374 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vladitot
Если у тебя количество полей одинаковое в выборке и итоге, то можешь использовать union и прилепить снизу к основной выборке выборку итога.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы