SELECT
user_id,
SUM(CASE WHEN (message='Купил Lada') THEN 1 ELSE 0 END) AS Lada,
SUM(CASE WHEN (message='Купил Volvo') THEN 1 ELSE 0 END) AS Volvo,
SUM(CASE WHEN (message='Купил Kia') THEN 1 ELSE 0 END) AS Kia
FROM
your_table
GROUP BY
user_id
postgresql умеет стандартный filter для аггрегирующих функций. count(*) filter(where message='Купил Lada')
Что то же самое что и 'SUM(CASE WHEN (message='Купил Lada') THEN 1 ELSE 0 END)' но как-то нагляднее.