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」には適合しない)
うまくいけばそれは理にかなっている。