@kaxa3201

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

Получаю значение value с учетом group_by, как мне в одном запросе получить ещё и значение без group_by , чтобы сложить все значения ?

Вот часть запроса
DB::table('reserv as r')
            ->selectRaw('
                ch.code as name,
                round(sum(rd.balance),2)  as value
            ')
            ->groupBy('name')
            ->get();


в итоге хочу получить
[
'value'=1,
'value'=2,
'value'=3,
'total'=6
]
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Использовать инструкцию group by name with rollup;
select 
        coalesce(name, 'total') name, 
        sum(`value`) as value_sum 
from reserv
group by name
with rollup;


SQL fiddle online

PHP code:
<?php

$res = DB::table('reserv as r')
            ->selectRaw('
                    coalesce(name, "total") name, 
                    sum(`value`) as value_sum 
            ')
            ->groupBy(DB::raw('name with rollup'))
            ->get();

print_r($res);


PHP Laravel online
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
(SELECT 'value' AS `type`, `value`
  FROM `table`)
UNION (
  SELECT 'total' AS `type`, SUM(`value`)
    FROM `table`
)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы