现在有两个表record 和 info,其中表record存放每次通话记录的主动呼出号码与被动呼入号码,表Info存放人名和对应号码,如下:
现在的目的是统计每个人的手机号码主动呼出次数与被动呼入次数,就用到下列语句即可:
SELECT name,
phone,
COUNT(CASE WHEN info.phone = phone_in THEN 1 ELSE NULL END) AS call_in,
COUNT(CASE WHEN info.phone = phone_out THEN 1 ELSE NULL END) AS call_out
FROM info,record
GROUP BY info.name;
特别注意, 这里的CASE 语句中 ELSE 后应当用NULL 而不是 0 或者false!只有为NULL的时候COUNT才不会计算!
统计结果: