technical note

【SQL】テーブルのグループ別行数をカウントして別テーブルに入れる

SQLもなんとなーく使っているので、いつまでたっても・・・

タイトルどおりなのですが、ちょっと調べんとわかりませんでした。

テーブルのグループ別行数をカウントして別テーブルに入れる

こんな、自治体ごとに世帯名が格納されているテーブルがあるとします。

世帯名は適当です。

自治体ごとに何世帯あるかカウントして、以下のテーブルに収めたいのです。

 

で、以下のSQLを実行・・・

update town.town as t
  set households_count = (
  select count(h.town_id) from town.households h
  where h.town_id = t.town_id
  group by h.town_id
 )
where exists (
  select 1 from town.households h
  WHERE h.town_id = t.town_id
);

実行結果

簡単だけど、すぐ忘れてしまう。

-technical note