Как я могу суммировать данные после группировки в laravel? - PullRequest
1 голос
/ 03 апреля 2020

Таблица Trx

id | akun_id | total | saldo | type
---|---------|-------|-------|------
1  | 2       | 10000 | 10000 | IN
2  | 2       | 10000 | 20000 | IN
3  | 2       | 20000 | 40000 | IN
4  | 2       |  5000 | 35000 | OUT
5  | 8       | 50000 | 50000 | IN
6  | 8       | 50000 | 100000| IN

В приведенном выше примере записи я хочу получить "saldo" trx и получить последнюю запись в группе по "akun_id".

Это мой sql запрос используется в laravel

$data = DB::select('select id, akun_id, saldo
    FROM akun_trxes
    WHERE IN (
        SELECT MAX(id)
        FROM akun_trxes
        GROUP BY akun_id
    )');

И это результат.

[
  {
    id: 4,
    akun_id: 2,
    saldo: 35000
  },
  {
    id: 6,
    akun_id: 8,
    saldo: 100000
  }
]

После того, как я получу данные последней записи в группе, тогда я могу СУММАТЬ, что все последние " saldo "данные ?? Я хочу получить такой результат

135000

Я знаю для SUM, что "saldo" может использовать foreach / for, но я хочу использовать запрос sql. Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Вы хотите запрос агрегации?

SELECT SUM(saldo)
FROM akun_trxes
WHERE IN (
    SELECT MAX(id)
    FROM akun_trxes
    GROUP BY akun_id
)
0 голосов
/ 03 апреля 2020

так что суммируйте это в запросе, как этот

$data = DB::select('select id, akun_id, saldo, SUM(saldo)
    FROM akun_trxes
    WHERE IN (
        SELECT MAX(id)
        FROM akun_trxes
        GROUP BY akun_id
    )');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...