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

#sql #laravel

#sql #ларавель

Вопрос:

Я хочу получить результат приведенной ниже таблицы, у меня есть две таблицы: одна для клиентов и одна для транзакций, совершенных клиентами.Кто-нибудь может помочь мне добиться этого!Заранее благодарю, вот что я хочу вернуть

введите описание изображения здесь

Это запрос, который я пишу, чтобы получить результат.

  $customers_trans = DB::table('contacts as c')
        ->select(
            DB::raw('SUM(tr.final_total) AS total_customer'),
            DB::raw('COUNT(c.id) AS customercount'),
            DB::raw('COUNT(c.id) AS average')
        )
        ->whereBetween('tr.transaction_date', [$date_debut,  $date_fin])
        ->groupBy('c.id')
        ->join('transactions as tr', 'tr.contact_id', '=', 'c.id')
        ->get()->toArray();
 

Комментарии:

1. Итак, в основном вы хотите иметь: между любыми двумя датами / временем общее количество клиентов / клиентов, совершивших транзакции, общая стоимость транзакций и средняя стоимость транзакции на клиента / клиента — это правильно?

2. Да, это именно то, что я хочу @Donkarnash

3. Что не так с вашим кодом? Вам необходимо предоставить информацию о структуре таблицы и образцах данных, прежде чем кто-либо сможет помочь.

4. @miken32 я не получаю результат, как на этом изображении. Таблица в качестве примера приведена на рисунке ниже, структура таблиц, я не хотел ее указывать, так как она немного длинная.

Ответ №1:

Я думаю, это то, что вы хотите:

 $customers_trans = DB::table('contacts as c')
    ->select(
        DB::raw('SUM(tr.final_total) AS total_customer'),
        DB::raw('COUNT(*) AS customer_count'),
        DB::raw('AVG(tr.final_total) AS average')
    )
    ->join('transactions as tr', 'tr.contact_id', '=', 'c.id')
    ->whereBetween('tr.transaction_date', [$date_debut,  $date_fin])
    ->groupByRaw('HOUR(tr.transaction_date)')
    ->get()
    ->toArray();

 

Комментарии:

1. Я попробую и расскажу вам результат @Hafez Divandari

2. я получаю сообщение об ошибке вызова неопределенного метода groupByRaw

3. @Moum какую версию Laravel вы используете? попробуйте groupBy(DB::raw('HOUR(tr.transaction_date)')) вместо этого.

4. я использую версию 6 Laravel, хорошо, спасибо

5. Это работает очень хорошо, большое вам спасибо за вашу помощь, Хафез Дивандари, вы сэкономили мое время.