株式会社タフス

グループか。

水曜日は技術がテーマなのですが、
自分はまだまだ青いので、初心者丸出しの内容ですみません。

DBを扱っている方ならsqlはお手の物かと思いますが、
問い合わせ条件で、特定のキーでグループ化するのがgroup by句です。

select aaa, sum(bbb) from tableA group by aaa

↑こんなの。aaaでグループ化した時のbbbの合計値とか。

で、group by句で指定した以外のキーもselectしたい時、
どうすればよいか。

例えば、今あなたは工場見学に申し込もうとしています。
空いているコースでゆっくり見学したいと思っていますが、
もともとの参加者が多いなら、当日の参加者が少々多くても
むしろ良い機会かもしれません。
こんな状態↓

コース:日程:参加者:コース総参加者
――――――――――――――――――

ビール工場コース:C日程:10人:1000人 ←断然コチラ
洗濯機工場コース:A日程: 5人:10人

ここで、工場見学テーブルにはコース、日程、参加者だけが
登録されているとします。
コースでグループ化してしまうと、各日程の情報が分かりません。

で、以下のようにします。
select
 a.コース
 a.日程
 a.参加者
 b.コース総参加者
from 工場見学 a left join (
  select
   コース
   sum(参加者) as コース総参加者
  from 工場見学
  group by コース
 ) b on a.コース = b.コース
order by コース,日程

これなら、1000人申し込んでて10人のビールC日程はなんて狙い目なんだ!
ということが分かります。

単純にするためにいろいろ適当にしておりますので
ご参考まで、です。
もっと適切な方法とかありそうですが、上記のでも目的は果たせます。

悩みましたがなんとか解決できて良かったです。

ホントもっと勉強しないとな、と感じる日々でありますが
精進していきたいと思います。