Я хотел бы спросить; Вы уверены, что это нужно на уровне БД?
Если вы не работаете исключительно на уровне базы данных, любая обработка этих результатов будет встроена в прикладной уровень и, вероятно, потребует некоторой формы циклического просмотра результатов
Это может быть проще, проще и более читабельно для запуска
SELECT user_type,
COUNT(*) AS count
FROM users
WHERE user_type IN ("driver", "passenger")
GROUP BY user_type
.. и просто сложите общее количество на прикладном уровне
Как указал Хуан в другом ответе, DISTINCT является избыточным, поскольку GROUP BY гарантирует, что каждая результирующая строка отличается
Как и Хуан, я также предпочитаю здесь IN, а не условие OR, для user_type, поскольку я считаю его более читабельным. Это также снижает вероятность путаницы, если объединить дальнейшие условия И в будущем
Кроме того, я бы рассмотрел перемещение имен типов пользователей, "водителя" и "пассажира" в отдельную таблицу user_types и ссылки на них по столбцу идентификатора из таблицы ваших пользователей
NB Если вам абсолютно необходимо это на уровне БД, я бы рекомендовал использовать один из превосходных вариантов Пола или подход CROSS JOIN, предложенный Томом Маком и Хуаном в качестве второго предложенного решения