Excel と比較した SQL の学習 (5): グループ化とサブクエリ

本日の記事は、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 関数 | 統計関数

Excel によるデータ分析:データ取得 | データ処理 

方法論:エクセルを体系的に学ぶ方法 | データ分析を学ぶ | エクセルのスキル 

コードワードは簡単ではありません。右下隅をクリックして 表示し 、妹に鶏の足を追加してください〜

おすすめ

転載: blog.csdn.net/data_cola/article/details/116026169