Если я правильно понял ваш вопрос, что-то вроде этого запроса должно сделать это:
SELECT
DATE(date_add) AS date,
SUM(user_id != 2422) AS web,
SUM(user_id = 2422) AS iphone
FROM stats
GROUP BY date
Вы можете попробовать его на SQLize .
Кстати,если вы хотите посчитать «уникальных посетителей» (идентифицированных по идентификатору пользователя, строке агента пользователя и IP-адресу), вы можете сделать это с помощью подзапроса:
SELECT
date,
SUM(user_id != 2422) AS web,
SUM(user_id = 2422) AS iphone
FROM
( SELECT DATE(date_add) AS date, user_id
FROM stats
GROUP BY date, user_id, ip, user_agent ) AS foo
GROUP BY date
(если вам не нужно былоразделить счет между пользователями iPhone и других пользователей, вы можете просто использовать COUNT(DISTINCT user_id, ip, user_agent)
вместо подзапроса.)