中抜き
アナリティクスやデータサイエンスに携わる人にとって、SQLは必ず知っておくべき言語です。
データサイエンスの専門家なら誰でも使ってみたい、データ分析のための8つのSQLテクニックをご紹介します。
挙げる
SQLはデータサイエンスの専門家にとって重要な武器です。SQLを学んでいなければ、アナリティクスやデータサイエンスで成功することは期待できないというのが経験則です。
SQLはなぜ重要なのですか?
新たな10年を迎え、生産と消費のデータは日に日に急増しています。
データに基づいて十分な情報に基づいた意思決定を行うために、世界中の組織が膨大なデータの宝庫から情報を掘り起こすビジネスアナリストやデータサイエンティストなどのデータ専門家を雇用しています。
最も重要なツールのひとつがSQLです!
構造化クエリー言語(Structured Query Language)は、何十年も前から存在しています。これは、リレーショナルデータベースに格納されたデータを管理するために使用されるプログラミング言語です。
データアナリストはSQLを使用して、データベースに格納されたデータへのアクセス、読み取り、操作、分析を行い、十分な情報に基づいた意思決定プロセスを推進するための有用な情報を生成することができます。
この記事では、どんな高度なデータ分析問題にも対応できる8つのSQLテクニックについて説明します。この記事は、あなたがSQLのごく基本的な理解を持っていることを前提としていることに留意してください。
ディレクトリ
データセットの理解
SQL テクニック 1: 行と項目の計算
SQLテクニック2:集約関数
SQLテクニック3:極値認識
SQLテクニック4:データスライス
SQLテクニック5:データの制限
SQLテクニック6:データの並べ替え
SQLテクニック7:フィルターモード
SQL テクニック 8: グループ化、データの要約、グループフィルタリング
データセットの理解
データ分析を学ぶ最良の方法とは?データセットを使って分析することです!
この目的のために、私は小売店の仮想データセットを作成しました。顧客データテーブルは ConsumerDetails で表します。
データセットの構成は以下の通り:
- Name -消費者名
- 地域性 - 顧客の所在地
- Total_amt_spend - 消費者が店舗で消費した総額
- 業界 - 消費者が属する業界を示します。
注:実験には MySQL 5.7 を使用します。ここからダウンロードできます。
SQL テクニック 1 - 行と項目の計算
カウント機能
分析は、最も単純なクエリ、つまりテーブルの行数を数えることから始めます。これには関数 COUNT() を使用します。
素晴らしい!これで、テーブルの行数が10行であることがわかりました。しかし、何百万行ものデータセットがある場合は、とても役に立ちます!
特徴的な機能
データテーブルが重複した値で埋め尽くされることはよくあります。一意な値を取得するために、さまざまな関数が使用されます。
データセットから顧客の属する業界を調べるには?
その通りです。これはDISTINCT関数を使うことで可能です。
SQLテクニック2-集計関数
集計関数はあらゆるデータ分析の基礎です。これらはデータセットの概要を提供します。これから説明する関数は -SUM()、AVG()、STDDEV() です。
SUM関数
SUM() 関数を使用して、表の数値列の合計を計算します。
を使用して、顧客一人当たりの消費総額を計算します:
上の例では、sum_all が合計値を格納する変数です。消費者の消費総額は12,560ルピーです。
AVG機能
AVG() 関数は平均を計算します。小売店への平均消費支出を求めます:
小売店での平均消費額は1,256ルピー。
STDDEV関数
データセットを見て、消費支出の平均値を見ると、何かが欠けていることに気づくでしょう。平均値では完全な理解ができないので、もう一つの重要な指標である標準偏差を見つけましょう。この関数はSTDDEV()です。
標準偏差は829.7!
SQLテクニック3 - 極値認識
次の分析は、極値を決定することで、データをより深く理解することができます。
最大機能
MAX() 関数は、最大値を特定するために使用できます。適用方法を見てみましょう:
消費者が小売店で使える金額の上限は3,000ルピー。
最小関数
max 関数と同様に、指定した列の最小値を特定する MIN() 関数もあります:
小売店での最低利用額は350ルピー。
SQLテクニック4 - データスライス
さて、データ分析で最も重要な部分の一つであるデータスライスに焦点を当てましょう。この部分は高度なクエリの基礎となり、特定の条件に基づいてデータを取り出すのに役立ちます。
- 小売店が特定の場所、特にシャクティ・ナガルやシャンティ・ヴィハール地域からの顧客を見つけたいとします。
3人の顧客がいます!WHERE句を使用して、消費者が地元(Shakti NagarとShanti Vihar)に住んでいるという条件に基づいてデータをフィルタリングします。
ここではOR条件を使いませんでした。その代わりに、WHERE句で複数の値を指定できるIN演算子を使いました。
- 特定の地域に居住し、2,000ルピー以上を消費する顧客を見つける必要があります。
このデータセットでは、シャンタヌとナターシャだけがこの条件を満たしています。両方の条件を満たす必要があるので、ここでは合計条件の方が適しています。別の例を見てみましょう。
- 今回、小売業者は1,000ルピーから2,000ルピーの間で買い物をした消費者全員を取り戻し、特別なマーケティング・オファーを打ち出したいと考えています。
同じ文の別の書き方はこうです:
この条件を満たしているのはローハンだけ!
素晴らしい!もう半分まで来ました。これまで得た知識をもとに、さらに前進していきましょう。
SQLテクニック5 - データを制限する
制限
数百万レコードからなるデータテーブルを表示したいとします。SELECT文を使うことはできません。なぜなら、それはテーブル全体を画面にダンプすることになり、面倒で計算量が多くなるからです。Limitを使うことができます:
上記のSQLコマンドは、テーブルの最初の5行を表示するのに役立ちます。
オフセット
4行目と5行目だけを選択したい場合はどうしますか?OFFSETを使用します。OFFSETは指定された行数をスキップします。その方法を見てみましょう:
SQLテクニック6 - データの並べ替え
データの並べ替えは、データの監視に役立ちます。並べ替えは、キーワード ORDER by を使用して実行できます。
ORDER BY
キーワードを使用すると、データを昇順または降順で並べ替えることができます。既定では、ORDER BY キーワードはデータを昇順に並べ替えます。
Total_amt_spendカラムに基づいてデータが昇順にソートされる例を見てみましょう:
データセットを降順に並べ替えるには、次のコマンドを実行します:
SQL テクニック 7 - フィルターモード
前のセクションでは、1つ以上の条件に基づいてデータをフィルタリングする方法を学びました。ここでは、指定したパターンカラムにマッチさせる方法を学びます。この目的のために、まずLIKE演算子とワイルドカードを理解します。
ライク
LIKEはWHERE句で使用され、カラム内の指定されたパターンを検索します。
ワイルドカード文字
ワイルドカードは、文字列内の1つ以上の文字を置き換えるために使用されます。LIKE演算子と組み合わせて使用します。最も一般的なワイルドカードは以下の2つです:
0文字以上を示します。
文字
仮想小売店データセットでは、「Nagar」で終わるすべての地域を対象とします。時間をかけて問題文を理解し、解決方法を考えてください。
これを少し分解してみましょう。Nagar "で終わる位置はすべて必要であり、この特定の文字列にはいくつでも文字が入ります。したがって、"Nagar "にワイルドカード文字"%"を使用することが可能です:
なんと、この名前で終わる場所が6つもあるではないですか。パターン・マッチを行うためにLIKE演算子を使用していることに注意してください。
次に、別のパターン・ベースの問題に挑戦します。番目の文字は、それぞれの名前に "a "が入っている消費者の名前に "a "が入っている必要があります。
もう一度言いますが、時間をかけて問題を理解し、論理的な解決策を考えることをお勧めします。
問題を少し分解してみましょう。ここでは、2番目の文字は "a "でなければなりません。最初の文字はどんな文字でもよいので、ワイルドカードの_を使います。
2文字目以降は何文字でもよいので、ワイルドカード"%"で置き換えます。最終的なパターン・マッチを以下に示します:
この条件を満たしたのは6人。
SQL テクニック 8 - グループ化、データの要約、グループフィルタリング
最後に、SQLで最も強力な分析ツールの1つである、GROUP BY文を使用したデータのグループ化について説明します。
このステートメントの最も有用なアプリケーションは、カテゴリ変数の分布を求めることです。これは、GROUPBY文と集約関数を使用することによって行われます。
問題文を使って、このことをよりよく理解しましょう。ある小売店が、属する業種に対応する顧客数を求めたいとします:
異なる業種に属する顧客の数は、多かれ少なかれ同じであることに注意してください。したがって、クライアントを業種別にグループ分けし、その総支出額を計算してみましょう:
最も多くの金額を費やしているのは製造業の顧客であることがわかります。簡単そうでしょう?もっと複雑にするために要件を変え続けましょう。
今、小売業者は、総売上高が2500を超える業種を見つけたいと考えています。この問題を解決するために、データは再び業種データに基づいてグループ化され、HAVING句が使用されます。
持ち
HAVING句はWHERE句と似ていますが、グループ化されたデータをフィルタリングするためだけに使用されます。常にGROUP BY文の後に来ることを覚えておいてください。
条件を満たすカテゴリは、航空宇宙、防衛、製造の3つだけです。しかし、よりわかりやすくするために、ORDER BYキーワードも追加します:
巻き上げる
ありがとうございます。これらはSQLにおけるすべてのデータ分析クエリのための基礎知識です。また、これらの基本を高度なクエリに使用することもできます。この記事では、MySQL 5.7 を使用して例を構築しました。
これらのSQLクエリが、複雑なデータを分析する日々の生活に役立つことを願っています。