Вы не сообщаете нам, какую базу данных используете.
На SQL сервере, по крайней мере, в более новых версиях, у вас есть функция управления окнами или аналитические функции, и они также доступны в большинстве других популярных RDBMS
Вы можете сделать то, что вы хотите на SQL Сервере, добавив это к вашему выбору
,count(*) over (partition by 1) as [NrOfRows]
Аналитическая функция выполняет «стандартный» запрос, а затем выполняет функцию управления окнами на набор результатов. Приведенное выше количество подсчитывает строки в наборе результатов, разделенные константой 1, которая, конечно, стабильна во всех строках, поэтому дает полный счетчик строк.
Возможно, не во всех базах данных допускается таким образом, константа, возможно, это дало бы лучший результат в некоторых, я знаю, это работает в SQL Сервер:
,count(*) over (partition by (select 1 n)) as [NrOfRows]