Из комментария к предложению добавить столбец, а не строку:
До сих пор я был в тупике, потому что вы не можете смешивать столбцы данных с агрегатными функциями
Вы можете использовать аналитические эквиваленты, хотя. При этом используется таблица departments
образца схемы HR, которая имеет 27 строк, но просто подставляет любое имя таблицы - вам нужно сохранить псевдоним таблицы, чтобы вы могли сделать t.*
:
select count(*) over (partition by null) as total_count,
t.*
from departments t;
TOTAL_COUNT DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
----------- ------------- ------------------------------ ---------- -----------
27 10 Administration 200 1700
27 20 Marketing 201 1800
27 30 Purchasing 114 1700
...
Вы не можете просто добавить проверку rownum
, так как она будет считать только строки в наборе результатов:
select count(*) over (partition by null) as total_count,
t.*
from departments t
where rownum = 1;
TOTAL_COUNT DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
----------- ------------- ------------------------------ ---------- -----------
1 10 Administration 200 1700
поэтому вам нужно использовать подзапрос:
select *
from (
select count(*) over (partition by null) as total_count,
t.*
from departments t
)
where rownum = 1;
TOTAL_COUNT DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
----------- ------------- ------------------------------ ---------- -----------
27 10 Administration 200 1700
Конечно, вы все равно обычно используете подзапрос, чтобы вы могли упорядочить внутренний запрос, прежде чем выделять одну строку.