Home  >  Q&A  >  body text

If the value exists, get the record sum and treat it as 1 instead of the exact value

I need to "open" as 2 and click as 1 but now I'm getting like open as 5 and click as 2

"SELECT 
COALESCE(sum(requested),0) as requested,
COALESCE(sum(processed),0) as processed,
COALESCE(sum(open),0) as open,
COALESCE(sum(click),0) as click,
COALESCE(sum(dropped),0) as dropped,
COALESCE(sum(delivered),0) as delivered,
COALESCE(sum(spamreport),0) as spamreport,
COALESCE(sum(deferred),0) as deferred,
COALESCE(sum(bounce),0) as bounce,
COALESCE(sum(unsubscribe),0) as unsubscribe
FROM CAMPAIGN_REPORTS WHERE _kftCampaingID='".$campaignId."'"

P粉289775043P粉289775043179 days ago344

reply all(1)I'll reply

  • P粉883223328

    P粉8832233282024-04-05 15:13:20

    sum() works as expected. If you want to treat any value above 0 as 1, write an if condition like below. Having said that, coalesce looks redundant here.

    sum(if(open is not null and open > 0, 1, 0)),
    sum(if(click is not null and click > 0, 1, 0))

    reply
    0
  • Cancelreply