Navicatブログ

特定の期間内にn個より多くのアイテムを購入した顧客を見つける 2022年7月18日 Robert Gravelle

あなたのビジネスを理解することの一部は、販売数などの販売指標を追跡し、最良の顧客を特定することです。そのためには、おそらく、月、四半期、年、またはその他の期間で最も多くの購入を行った顧客に関するデータをフェッチすることから始めることをお勧めします。このデータにより、購入パターンを分析し、傾向を特定できます。このブログでは、強力なCount()関数とGROUP BY句およびHAVING句を組み合わせることによってこれを行うサンプルクエリをいくつか紹介します。

基本的なクエリ

Sakilaサンプルデータベースに対してクエリを実行していきます。これは、DVDレンタルストアをモデル化した適切に正規化されたスキーマであり、映画、俳優、映画と俳優の関係、および映画、ストア、レンタルを接続する中央在庫テーブルなどを特徴としています。したがって、その顧客は映画を購入するのではなく、むしろレンタルしています。それでも、データの選択に関する基準は変わりません。つまり、メインのrentalテーブルの行をカウントし、結果をcustomer_idでグループ化します。以下は、Navicat Navicat Premium 16の基本的なクエリです。合計で20本を超える映画をレンタルした顧客に結果を限定しています。

basic_query (61K)

これは、結果をcustomer_idによって順序付けます。その後、num_of_films_rentedで結果を並べ替えます。

追加で顧客詳細を取得する

上記のクエリは、多くの映画をレンタルした顧客を特定するのに十分ですが、ID以外の顧客の詳細は提供しません。より多くの顧客データを含めるためには、顧客テーブルを結合する必要があります。映画をレンタルした顧客のみがメインクエリに結合されるように、LEFT JOINを使用する必要があります。顧客名を追加した結果は次のとおりです:

customer_data (125K)

結果のフィルタリング

これまでのところ、全ての映画と期間の結果を含め、非常に幅広いネットをキャストしてきました。カテゴリと期間で映画をターゲットすることにより、より具体的な情報を得ることができます。そのためには、さらにいくつかのテーブルを追加する必要があります。テーブルをクエリに結合する方法がわからない場合は、Navicatで、オブジェクトペインでテーブルを選択し、テーブルをモデルに置き換え...コマンドを実行できます。

reverse_tables_to_model (68K)

これにより、モデリングツールのスキーマダイアグラムにそれらが追加され、それらの関係を表示できるようになります。

schema_diagram (264K)

修正されたクエリでは、結果を2005年全体を通じてレンタルされたコメディーに限定します。

rentals_by_category (107K)

1つのカテゴリのレンタル数が少ないため、最小映画数が5以上に引き下げられていることに注意してください

カウントによる並べ替え

もしかすると、レンタル数別にレコードを表示したいかもしれません。これを実現するために必要なのは、ORDER BY句を含めることだけです。num_of_films_rentedでDESCending順に並べ替えた最終的なクエリを次に示します。これにより、2005年に最も多くのコメディーをレンタルした顧客が結果の一番上に表示されます:

ordered_by_count (111K)

結論

今日のブログでは、Count()関数を GROUP BY句およびHAVING句と組み合わせて、顧客の消費習慣に関する貴重な洞察を得る方法を学びました。ご想像のとおり、同じクエリ構造を利用して、製品の販売やレンタルに関連するあらゆる種類の傾向とパターンを発見できます。収集された洞察は、組織の意思決定を導く上で非常に有益です。

ブログのアーカイブ
シェア