sql - 順番 - 副問い合わせ group by




複数の列でグループを使用する (2)

私はGROUP BY xポイントを理解しています

しかし、 GROUP BY x, yはどのように機能し、それはどういう意味ですか?


GROUP BY句は、集合関数と組み合わせて使用​​して、結果セットを1つ以上の列でグループ化します。 例えば:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

この順序を覚えています:

1)SELECT(データベースからデータを選択するために使用されます)

2)FROM(句はテーブルをリストするために使用されます)

3)WHERE(句はレコードをフィルタリングするために使用されます)

4)GROUP BY(複数のレコードにまたがってデータを収集し、結果を1つ以上の列でグループ化するSELECT文で句を使用できます)

5)HAVING(節はGROUP BY句と組み合わせて使用​​され、返された行のグループを条件がTRUEのものだけに制限します)

6)ORDER BY(キーワードは結果セットをソートするために使用されます)

集約関数を使用している場合は、これらをすべて使用できます。これは、設定する必要がある順序です。そうでない場合、エラーが発生する可能性があります。

集計関数は次のとおりです。

MINは指定された列の最小値を返します

SUMは、指定された列の数値の合計を返します

AVGは、特定の列の平均値を返します

COUNTは、指定された列の値の合計数を返します。

COUNT(*)はテーブル内の行数を返します。


Group By X、同じ値を持つすべてのものを1つのグループに入れる Group By X意味します。

Group By X, Y、1つのグループにXとYの両方に同じ値を持つものをすべて入れることを意味します

例を使用して説明するために、大学でどの科目に出席しているのかを示す次の表があるとしましょう:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

件名列のみでgroup byを使用すると、 いう:

select Subject, Count(*)
from Subject_Selection
group by Subject

次のようなものが得られます:

Subject    Count
------------------------------
ITB001     5
MKB114     2

... ITB001には5つのエントリがあり、MKB114には2つのエントリがあるため

2つの列でgroup by場合:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

私たちはこれを得るでしょう:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

これは、2つの列でグループ化すると、 「同じSubjectとSemesterを持つすべてのユーザーが同じグループに属するようにグループ化し、すべての集計関数 (Count、Sum、Averageなど)を計算するためです 。 ) これらのグループのそれぞれのための " 。 この例では、これを数えると、1学期にITB001をやる3人、 2学期に2人がいるという事実によって証明されます.MKB114をやっている人はどちらも学期1に入っているので、学期2の行(データ「MKB114、学期2」には適合しない)

うまくいけばそれは理にかなっている。





group-by