本日の記事は、SQL を Excel と比較して学ぶシリーズの第 5 回目で、前の 3 つの記事のポータルは次のとおりです: 「計算フィールド」、「行と列の操作」、「ライブラリ/テーブルの追加、削除、および変更」 /Records " , " Xiaobai の SQL 学習記事".
このセクションで使用するデータ テーブル:成績テーブル (sc)、学生の基本情報テーブル (student1)
1.グループ化
01 グループを作成する
group byコマンドはグルーピングを作成するために使用します.グルーピングは実際には非常に分かりやすいです.Excelのピボットテーブルです.集計方法はカウント、合計または平均の関数であるため、通常は集計関数と組み合わせて使用されます.
--语法
select 列,聚合函数 from 表 where子句 group by 列;
group by は where の後、order by の前に配置する必要があります
Q1:学籍番号(snum)ごとに人数を数えます
[group by + count] を使用して、snum 学生番号列をグループ化してカウントします。これは、snum を Excel ピボット テーブルの列ラベルにドラッグし、同時に snum をカウントすることと同じです。結果は同じです。
select snum, count(*) from sc group by snum;
同様に、cnum とスコア グループの結果を数えてみることができます。
Q2: 学生番号 (snum) ごとの合計成績を数えます。
[group by + sum] と sum 関数を組み合わせることで、生徒数ごとの合計点数を数えることができ、その点数を Excel で集計します。
select snum,sum(score) from sc group by snum;
Q3: 生徒番号と学年番号ごとに平均学年を計算する
これは Excel ピボット テーブルで行われ、snum と cnum を行ラベルにドラッグすると、スコア カウント項目が平均化されます。
[複数の列でグループ化]、複数の列をグループ化するには、グループ化後の各列をコンマで区切る必要があります。下図のようにsnumを先にグループ化し、次にcnumをグループ化し、グループ化後の値を平均すると、Excelのピボットテーブルと同じ結果になります。
select snum,cnum,avg(score) from sc group by snum,cnum;
02 グループ化後のフィルター
group by を使用してグループを作成した後、どのグループとどのグループを除外するかを保持したい場合は、having コマンドを使用する必要があります。
--语法
select 列,聚合函数 from 表 where子句 group by 列 having 聚合函数 操作符 值;
Web サイトのユーザーのログインと閲覧の記録テーブルは次のとおりです。レコードの行はユーザーが 1 回ログインした期間を示し、singin フィールドはユーザーがクリックした回数を示し、各ユーザーがログインした回数をカウントします。ウェブサイトへ(今までにグループを確認してください)
Q4: Web サイトに 2 回以上ログインしているユーザーは誰ですか?
select name,count(*) from employee_tb1 group by name having count(*) >= 2;
パースペクティブの後に別のスクリーニングを行うことと同等です
どことの違い
where と having はどちらもフィルタリング コマンドですが、where は集計関数をフィルタリングできないため、having が使用されます。これらの違いは次のとおりです。
行をフィルター処理し、フィルター グループを使用する場合。
グループ化の前に where が使用され、グループ化の後に having が使用されます
【どこでも同時に使う】
Q5: 2 回以上クリックしたユーザーのうち、2 回以上ログインしたユーザーを数えます。
select name,count(*) from employee_tb1 where singin>=2 group by name having count(*) >=2;
グループ化とソート
グループ化後の順序は必ずしも昇順、降順とは限りませんが、 order by を使用する場合と使用しない場合の違いは次のとおりです。グループ化は一般にソートと組み合わされ、order by は group by の後に記述されます。
二、サブクエリ
サブクエリとは、クエリの中にクエリを入れ子にすることで、サブクエリもわかりやすく、Excel の IF 関数の入れ子の考え方と似ています。
where でのサブクエリの使用は、where ステートメントの後に別のクエリを演算子 (>、<、=、in) で接続することです。
--语法
select 列 from 表 where 操作符 (select 列 from 表)
Q6: 学籍番号が 7 の学生より成績が高い学生の情報を知りたい
select snum.cnum,score from sc where score > (select score from sc where snum = 7);
これは、次の 2 つの操作を行うのと同じです。
まず、学籍番号が 7 である 89 の学生の学年を調べます。
次に、スコアが 89 より大きい学生の情報をクエリします。
結果は、サブクエリの結果と一貫性があります。where でサブクエリを使用する場合、サブクエリの結果は、データ テーブルではなく、1 つまたは複数の値である必要があります。
サブクエリは、上記の sc テーブル クエリの例のように同じテーブルで使用できます。次の例のように、異なるテーブルでも使用できます。
Q7: 成績が 90 点以上の学生の基本情報を問い合わせる
ここに成績表(sc)と生徒基本情報表(student1)があります.2つの表は同じフィールドの生徒番号(snum)を持ちます.成績表から成績が90以上の生徒の生徒番号を抽出し,基本情報テーブルにネストされています。
select * from student1 where snum in (select snum from sc where score> 90);
これで、関連するサブクエリの共有は終わりです. 具体的な演習については、SQLZOO のサブクエリ モジュールに移動して演習を行うことができます。
初心者レベルのデータ分析のための学習ルート計画を提供し、Excel から統計まで乾物を共有します。データ分析はスキルであり、誰もがデータを分析できることが期待されます。
関連情報:
SQL 学習: MySQL 入門 | ライブラリ/テーブル/レコードの追加、削除、および変更
Excel 分析方法:時系列分析 | 回帰分析 | 記述統計分析 | 相関分析
Excel グラフ:データ マップ | ピボット テーブル | 5 つの基本的なグラフ | 13 の高度なグラフ | ヒストグラム | 管理図 | 配置図
Excel 関数:日付テキスト関数 | 検索参照関数 | if 関数 | 統計関数
方法論:エクセルを体系的に学ぶ方法 | データ分析を学ぶ | エクセルのスキル
コードワードは簡単ではありません。右下隅をクリックして 表示し 、妹に鶏の足を追加してください〜