{category}

Laravel - 高度なクエリ

groupBy()

グループ バイ(Eloquent ORM とデータベース操作

意味 クエリ結果のグループ化


groupBy()とは?

groupBy()メソッドは、データベースクエリの結果を特定のカラムでグループ化するためのEloquent ORMのメソッドです。これを使うと、同じ値を持つレコードをまとめて、集計関数と組み合わせて使用することができます。

groupBy()の具体的な使い方

注文ステータス別の集計

// 注文をステータスでグループ化し、各ステータスの注文数を取得
$orders = DB::table('orders')
    ->groupBy('status')
    ->selectRaw('status, COUNT(*) as count')
    ->get();

// 結果の表示
foreach ($orders as $order) {
    echo "ステータス: {$order->status}, 件数: {$order->count}\n";
}

👇出力結果

ステータス: pending, 件数: 10
ステータス: processing, 件数: 5
ステータス: completed, 件数: 20
...

この例では、groupBy()メソッドを使用して、注文テーブルから注文のステータスごとにグループ化し、各ステータスの注文数を取得しています。selectRaw()メソッドを使用して、ステータスとそのカウント数を選択しています。結果として、各ステータスとそのステータスの注文数のリストが返されます。

カテゴリ別の商品の平均価格

// 商品をカテゴリでグループ化し、各カテゴリの平均価格を計算
$products = DB::table('products')
    ->groupBy('category')
    ->selectRaw('category, AVG(price) as avg_price')
    ->get();

// 結果の表示
foreach ($products as $product) {
    echo "カテゴリ: {$product->category}, 平均価格: ¥" . number_format($product->avg_price, 2) . "\n";
}

👇出力結果

カテゴリ: 電子機器, 平均価格: ¥50,000.00
カテゴリ: 家具, 平均価格: ¥30,000.00
カテゴリ: 衣類, 平均価格: ¥5,000.00
...

この例では、groupBy()メソッドを使用して、商品テーブルから商品をカテゴリごとにグループ化し、各カテゴリの平均価格を計算しています。selectRaw()メソッドを使用して、カテゴリと平均価格(AVG関数を使用)を選択しています。結果として、各カテゴリとそのカテゴリの商品の平均価格のリストが返されます。

groupBy()に関するよくある質問

Q. 複数カラムでのグループ化は?
A. 複数のカラムでグループ化するには、groupBy() にカンマ区切りで複数のカラムを指定するか、配列で指定します。例:groupBy(['status', 'category'])
Q. HAVINGと併用できる?
A. はい、having() メソッドを使ってグループ化された結果にさらに条件を追加できます。例:->groupBy('status')->having('count', '>', 10)
Q. 集計関数は何が使える?
A. COUNT(), SUM(), AVG(), MAX(), MIN() などの標準的なSQL集計関数が使用できます。selectRaw() や DB::raw() を使って指定します。

LaravelのgroupBy()についても学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、LaravelのgroupBy()やwhereNotBetween()、whereDoesntHave()、cursor()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Laravelを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Laravelはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

whereNotBetween()

範囲外の値を取得

種類: 高度なクエリ

whereDoesntHave()

関連がないレコードを取得

種類: 高度なクエリ

cursor()

データを順次処理

種類: 大量データ処理

@parent

親の内容を表示する

種類: レイアウトとコンポーネント

@empty

変数が空かチェック

種類: 制御構造