7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GROUP BYの意味がわからなかったです。(以下のコマンド)

SELECT divisions.division_name,COUNT(*) FROM divisions 
JOIN members ON divisions.division_id = members.division_id 
GROUP BY divisions.division_name,divisions.division_id 
ORDER BY divisions.division_id ASC;

自分には以下の疑問が出ました。
①GROUP BY divisions.division_name,divisions.division_id でなぜ二つ指定するんだろう?
②SELECTにdivisions.division_id がなくてもGROUP BY にdivisions.division_id を指定していいのか?
③SELECTにdivisions.division_id がなくてもORDER BY にdivisions.division_id を指定していいのか?

自分の理解では以下のようになっています。

①について、ORDER BY divisions.division_id ASC;の並びにするためにはGROUP BYでdivisions.division_idの指定が必要。

②について、SELECTになくても、GROUP BY にdivisions.division_id を指定してOK。
二つ指定することによって、二つの値を持つ、一つの組み合わせができるイメージ。(詳細は後述します。)
 
③について、SELECTになくても、ORDER BY にdivision_id を指定してOK。GROUP BY にdivisions.division_id を指定しているため、使用することができる。

②の後述
division.csv

101 ,営業部
102 ,人事部
103 ,システム部
104 ,総務部
104 ,人事部

上記ファイルを GROUP BY division_id,division_nameで指定すると
結果は以下のようになります。

#実行したコマンドです。

SELECT division_name,COUNT(*) FROM divisions GROUP BY division_id,division_name ORDER BY division_id ASC;
 division_name | count 
---------------+-------
 営業部        |     1
 人事部        |     1
 システム部    |     1
 人事部        |     1
 総務部        |     1
(5 rows)

102 ,人事部 と 104 ,人事部の組み合わせがGROUP BYで登録してあるため、
項目として人事部が二つあります。
人事部としてまとめて表示されそうですが、これは102 ,人事部と 104 ,人事部という
組み合わせが一つずつ登録されているため上記のようになります。

逆にGROUP BY にdivisions.division_id を指定していないと、以下のようになります。

#実行したコマンドです。
SELECT division_name,COUNT(*) FROM divisions GROUP BY division_name;
division_name | count 
---------------+-------
 総務部        |     1
 人事部        |     2
 システム部    |     1
 営業部        |     1
(4 rows)

人事部が2になり、division_nameごとに集計されています。

以上で説明を終わります。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?