Сгруппируйте данные по неделям в месяце и получите дату начала и окончания - PullRequest
0 голосов
/ 27 марта 2020

Я хочу группировать данные по неделям в месяц, как это сделать? вот пример данных

date            point1  point2
"2020-03-01"    1000    2000
"2020-03-02"    1000    2000
"2020-03-03"    1000    2000
"2020-03-04"    1000    2000
"2020-03-05"    1000    2000
"2020-03-06"    1000    2000
"2020-03-07"    1000    2000
"2020-03-08"    1000    2000
"2020-03-09"    1000    2000
"2020-03-10"    1000    2000
"2020-03-11"    1000    2000
"2020-03-12"    1000    2000
"2020-03-13"    1000    2000
"2020-03-14"    1000    2000
"2020-03-15"    1000    2000
"2020-03-16"    1000    2000
"2020-03-17"    1000    2000
"2020-03-18"    1000    2000
"2020-03-19"    1000    2000
"2020-03-20"    1000    2000
"2020-03-21"    1000    2000
"2020-03-22"    1000    2000
"2020-03-23"    1000    2000
"2020-03-24"    1000    2000
"2020-03-25"    1000    2000
"2020-03-26"    1000    2000
"2020-03-26"    1000    2000
"2020-03-27"    100     2000
"2020-03-28"    1000    2000
"2020-03-29"    1000    2000
"2020-03-30"    1000    2000

Я хочу группировать по неделям в месяце и получить начальную и конечную дату, как мне это сделать?

Я пытался использовать laravel, код похож на ниже

$startDate = date('Y-m-d', strtotime($request->get('start_date')));
$endDate = date('Y-m-d', strtotime($request->get('end_date')));

$transactions = $this->transaction
                ->select(
                    DB::raw("date_trunc('WEEK',(date + interval '1 day'))- interval '1 day' AS week"),
                    DB::raw('sum("point1" + "point2") total')
                )
                ->groupBy('week')
                ->whereDate('date', '>=', $startDate)
                ->whereDate('date', '<=', $endDate)
                ->get();

код выше будет суммировать следующую неделю в следующем месяце, как пример даты 29-03-2020 продолжается до 2020-04-04, и я не хочу этого делать, я просто хочу закончить в последнюю дату месяца (2020-03-31)

То, что я расширяю, составляет

start_date  end_date    total
2020-03-01  2020-03-07  21000
2020-03-08  2020-03-14  21000
2020-03-15  2020-03-21  21000
2020-03-22  2020-03-28  21000
2020-03-29  2020-03-31  21000

Большое спасибо за помощь.

1 Ответ

0 голосов
/ 27 марта 2020

Общие данные остаются в условии where, начале недели и конце недели, которые не соответствуют условию where. Вы должны использовать php для редактирования значения start_date первой недели в результате и значения end_date последней недели в результате

$transactions[0]->start_date = $startDate ? $startDate : $transactions[0]->start_date;
$transactions[$transactions->count() - 1]->end_date = $endDate ? $endDate : $transactions[$transactions->count() - 1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...