• ベストアンサー

複数行のグループ集計とカウント

初歩的な質問で、既に質問されている内容でしたらすいません。 不動産のデータベースでひとつのテーブル内に、最寄り沿線が3つ記録されています。 3列のデータをまとめてグループ化し、沿線名ごとのカウントを取るにはどうすれば良いでしょうか?テーブルの詳細は、添付画像をご確認ください。 1列ごとのやり方はわかるのですが、3列まとめてカウントする方がわかりません。 どなたか教えて頂けませんでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

特定物件に対して同じ沿線がかぶっているように見受けられますが そういう仕様でよいのですよね? であればこんな風ですかねぇ create table ensen (id int not null primary key,ensen1 int null,ensen2 int null,ensen3 int null); insert into ensen values(1,1,1,2),(2,1,2,2),(3,1,1,2),(4,3,4,5),(5,4,null,null),(6,5,6,null); select ensen_all ,count(*) from (select ensen1 as ensen_all from ensen where ensen1 is not null union all select ensen2 from ensen where ensen2 is not null union all select ensen3 from ensen where ensen3 is not null ) as sub group by ensen_all ただ、実際にはensen1~ensen3を別フィールドで管理しないで正規化処理をしておけば もっとデータ構造は簡単になります

kotakota0401
質問者

お礼

回答ありがとうございます。 この後、実装してみます。 大手不動産登録システムからのCSV書き出し+そのままインポートまでがパッケージになっているので、こちら側は読み取りしかできな状態だったのです。 初歩的な質問にお答え頂き本当にありがとうございました。

kotakota0401
質問者

補足

早速実装したところ、こちらの思った通り実装出来ました。本当にありがとうございましいた。