の要点は理解していますGROUP BY x
。
しかし、GROUP BY x, y
それはどのように機能し、何を意味するのでしょうか?
ベストアンサー1
Group By X
X の値が同じものをすべて 1 つのグループにまとめることを意味します。
Group By X, Y
X と Y の両方に同じ値を持つ人をすべて 1 つのグループに入れることを意味します。
例を使って説明すると、大学で誰がどの科目を受講しているかを示す次の表があるとします。
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
件名列のみにa を使用する場合は、次のように言います。
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 つの列でグループ化すると、「同じ科目と学期の人全員が同じグループになるようにグループ化し、各グループに対してすべての集計関数(カウント、合計、平均など)を計算する」ことになるためです。この例では、カウントすると、ITB001 を学期 1 で受講している人が3人、学期 2 で受講している人が2 人いるという事実によってこれが実証されています。MKB114を受講している人は 2 人とも学期 1 にいるので、学期 2 の行はありません (「MKB114、学期 2」のグループに該当するデータはありません)。
それが意味を成すといいのですが。