SELECT subscriber,
       count(*) AS value
FROM (SELECT events.calls.msisdn AS subscriber
      FROM events.calls
      WHERE (events.calls.datetime >= '2016-01-03 00:00:00')
        AND (events.calls.datetime < '2016-01-06 00:00:00')
        AND ((   (to_char(events.calls.datetime, 'HH24:MI') < '04:00')
              OR (to_char(events.calls.datetime, 'HH24:MI') >= '22:00')))

      UNION ALL

      SELECT events.sms.msisdn AS subscriber
      FROM events.sms
      WHERE (events.sms.datetime >= '2016-01-03 00:00:00')
        AND (events.sms.datetime < '2016-01-06 00:00:00')
        AND ((   (to_char(events.sms.datetime, 'HH24:MI') < '04:00')
              OR (to_char(events.sms.datetime, 'HH24:MI') >= '22:00')))) AS u
GROUP BY subscriber