前提・実現したいこと
以下のような2テーブルで住所ごとにおなじ場所のレコードをカウントした結果がほしいのですが、さらに条件として名前カラムが同じレコードは無視した数をカウントしたいです。
住所1テーブル
名前 id 住所
佐藤 1111 東京
佐藤 2222 東京
田中 3333 東京
清水 4444 東京
山田 5555 埼玉
住所2テーブル
名前 id 住所
きたの 6666 東京
きたの 7777 東京
きたの 8888 東京
おおた 9999 東京
おだ 10000 大阪
★理想SELECT結果
東京のレコードは合計8つあるが、
名前カラムが佐藤は2つきたのが3つあるため住所東京は3つカウントせず5になる
住所 カウント
東京 5
埼玉 1
大阪 1
試したこと
単体のテーブルであれば以下SQLでできました。
SELECT 住所,count(DISTINCT 名前) AS カウント FROM 住所1テーブル group by 住所
これを二つ合わしましたが結果が理想と違いました。
SELECT 住所,count(DISTINCT 名前) AS カウント FROM 住所1テーブル group by 住所 union all SELECT 住所,count(DISTINCT 名前) AS カウント FROM 住所2テーブル group by 住所
★現状
住所 カウント
東京 3
埼玉 1
東京 2
大阪 1
両方を結合させつつ都合よく足し算したいです
調べてみたのですが下記では
SELECT SUM(カウント)FROM( SELECT 住所,count(DISTINCT 名前) AS カウント FROM 住所1テーブル group by 住所 union all SELECT 住所,count(DISTINCT 名前) AS カウント FROM 住所2テーブル group by 住所 )
↓
|sum|
|7|
これではカウントの合計である"7"しか出ませんでした。
複雑で申し訳ないのですが、自分のアイデアでは実現できませんでした...
ご教示お願いいたします。
補足情報(FW/ツールのバージョンなど)
PostgreSQL使用
テーブル定義はどちらも以下です
テーブル名:住所テーブル 住所2テーブル
カラム
名前 VARCHAR(10)
id VARCHAR(10)
住所 VARCHAR(10)
回答1件
あなたの回答
tips
プレビュー