1. ホーム
  2. sql

[解決済み] 複数の列でgroup byを使用する

2022-03-15 13:28:03

質問

のポイントは理解しています。 GROUP BY x .

しかし、どのように GROUP BY x, y はどのように機能し、どのような意味を持つのでしょうか。

どのように解決するのですか?

Group By X というのは Xが同じ値の人をすべて一つのグループに入れる .

Group By X, Y というのは 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件です。

もし、私たちが group by の2つのカラムがあります。

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を持つものがすべて同じグループになるようにグループ化し、すべての集計関数を計算します。 (回数、合計、平均など) を、そのグループごとに設定します。 . この例では、このことは、数えると 1学期にITB001をやっている人、そして 2 は2学期に行う。MKB114をやっている人は2人ともセメスター1なので、セメスター2の行はありません(グループ "MKB114, Semester 2" に収まるデータがありません)。

ご理解いただけたでしょうか?