Получить записи за последний месяц

269
26 ноября 2016, 20:21

Нужно получить id клиента, количество и сумму заказов за последний месяц.

Paper::select('client_id', DB::raw('SUM(price) as `sum`'),DB::raw('COUNT(*) as `orders_per_month`'))
        ->where('created_at', '>=', Carbon::now()->startOfMonth())
        ->groupBy('client_id')->get()

Пытался так, но если за последний месяц у клиента нет заказов, то он не выводится.

Answer 1

Не знаю, лучше ли это перенести в комментарий, или нет, т.к. это не полноценный ответ на вопрос, но если вам нужно вывести клиентов, даже если у них не было заказа, то вам нужен примерно такой запрос:

select distinct t1.client_id,
       IFNULL(sum_price, 0) as sum,
       IFNULL(count_price, 0) as count
from test t1 left join (select client_id,
                               sum(price) as sum_price,
                               count(*) as count_price
                        from test
                        where created_at >= STR_TO_DATE('01.09.2016', '%d.%m.%Y')
                        group by client_id) t2
     on t1.client_id = t2.client_id

Пример на sqlfiddle

READ ALSO
mysql поиск дубликатов

mysql поиск дубликатов

Подскажите, как в MySQL можно организовать поиск дубликатов в поле? Вывести только неповторяющиеся значения можно с помощью DISTINCT, а вот как...

258
Механизм работы COUNT() в MySQL

Механизм работы COUNT() в MySQL

Почему для того, чтобы посчитать количество повторяющихся значений в поле, можно написать:

264
Не сохраняются картинки на компьюторе

Не сохраняются картинки на компьюторе

Подскажите пожалуйстаЭто файл обработки картинок

240
SQL Select больше или равно

SQL Select больше или равно

Здравствуйте! Помогите пожалуйста разобраться Есть таблица со колонкой price (тип int) в ней записи 50, 75, 100

345