2017-12-04 12 views
0

なぜ「having」節は機能しませんか?次のクエリの場合

select count(distinct email_address) 
from 
(
select distinct email_address, 
case when elq_activity_type='EmailSend' then 1 else 0 end 'Sends', 
case when elq_activity_type='Bounceback' then 1 else 0 end 'Bounces', 
case when elq_activity_type='EmailOpen' then 1 else 0 end 'Opens', 
case when elq_activity_type='EmailClickthrough' then 1 else 0 end 'Clicks' 
from elq_stg_activity 
) a 
having sum(sends-bounces)>0 

having句は何もしていないようです。私は間違って何をしていますか? 電子メールを配信したすべての固有の電子メールを取得する必要があります(送信バウンス)。 ありがとう!

+0

質問を編集し、サンプルデータと希望する結果を提供してください。 –

+0

ここからsend-bounceの列が来ていますか?サンプルデータやテーブル構造を教えてください。 – IamMOHIT

+0

私は文法の観点から質問していますが、having節の有無にかかわらず同じ出力が得られます。私が何か他のものをクリックしたようなものを置いたとしても(それは最大10%の送信者でなければなりません) – user8834780

答えて

1

私はあなたがこれをしたいと思う:

select count(email_address) 
from (select email_address, 
      sum(case when elq_activity_type = 'EmailSend' then 1 else 0 end) Sends, 
      sum(case when elq_activity_type = 'Bounceback' then 1 else 0 end) as Bounces, 
      sum(case when elq_activity_type = 'EmailOpen' then 1 else 0 end) as Opens, 
      sum(case when elq_activity_type = 'EmailClickthrough' then 1 else 0 end) as Clicks 
     from elq_stg_activity 
     group by email_address 
    ) a 
where sends = bounces; 

あなたのクエリで多数の問題があります。これは私が考えることができる唯一の合理的な解釈です。

+0

私はそれをチェックしますが、send-bounce = deliverは私が探しているものです。メールを配信したすべてのユーザーユーザーが多くの電子メールを送信できるため、送信しない>返信 – user8834780

+0

select count(distinct email_address)...送信バウンドが0を超えた場合ありがとうございました – user8834780