Я думаю, что вы можете делать то, что вы хотите, с условной агрегацией:
SELECT time,
COUNT(*) FILTER (WHERE username = 'jon') as cnt_jon,
COUNT(*) FILTER (WHERE username = 'bob') as cnt_bob
FROM My_With
GROUP BY time;
Или, с меньшим набором:
SELECT time,
SUM( (username = 'jon')::int ) as cnt_jon,
SUM( (username = 'bob')::int ) as cnt_bob
FROM My_With
GROUP BY time;