質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Amazon Redshift

Amazon Redshiftは、Amazon社が提供する 高速かつ完全マネージド型でペタバイト規模の クラウドデータウェアハウスサービスです。

Q&A

0回答

1509閲覧

片方にのみ存在するデータの抽出方法

sato_day

総合スコア20

Amazon Redshift

Amazon Redshiftは、Amazon社が提供する 高速かつ完全マネージド型でペタバイト規模の クラウドデータウェアハウスサービスです。

0グッド

0クリップ

投稿2017/11/08 08:13

以下2つのテーブルで、それぞれ以下4つを抽出したいのですがうまくいきません。。

①mstテーブルのうち、purchaseのflagが1のみの人数
②mstテーブルのうち、purchaseのflagが2のみの人数
③mstテーブルのうち、purchaseのflag1と2両方存在する人数
④mstテーブルのみに存在する人数(purchaseテーブルにいない)

■テーブル:mst
uid
1111
2222
3333

■テーブル:purchase
uid flag
1111 1
1111 2
2222 1
3333 1
3333 2
4444 2

たとえば①の答えは
uid「1111」は1,2とも存在するので対象外で、対象はuid「2222」のみなので回答は「1」としたいです。

①と②は以下で出るかと思ったのですが、データが0となってしまいます、、

SQL

1select 2 count(distinct case when flag = '1' then a.uid else null end) as one_only 3 count(distinct case when flag = '2' then a.uid else null end) as two_only 4from( 5select 6 uid 7from mst 8GROUP BY 1 ) as a 9 10left join ( 11 select 12 uid, 13 flag 14 from purchase 15 GROUP BY 1,2 ) as b on a.uid = b.uid 16 17HAVING COUNT(distinct flag)= 1 18

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問