Как объединить 2 запроса postgresql один без объединения или группирования результатов?

Изучаю Postgresql. Пытаюсь объединить два запроса в один. Но в основном примеры идут с объединением результатов.

А мне нужно просто два результата - общее количество строк в таблице с customerkey, и массив состоящий из 5 строк.

(уточняю, так как находила ответы о том, что существует авто подсчет, но это не подходит, так нужно чтобы COUNT посчитал все строки, а другой запрос вернул только пять)

Вот запросы: SELECT COUNT(*) FROM staff where customerkey = "9d18";

SELECT firstname, lastname FROM staff where customerkey='9d18' OFFSET 5 ROWS FETCH FIRST 5 ROW ONLY;

Заранее спасибо за помощь!


Ответы (2 шт):

Автор решения: Andrew Bystrov

Используйте UNION ALL. Только обратите внимание - чтобы использовать union all количество столбцов в обоих запросах должны совпадать

SELECT
   'total count with custokerKey 9d18 is' as firstname,
   COUNT(*) as lastname
FROM staff
where customerkey = "9d18";
union all
SELECT
    firstname,
    lastname
FROM staff
where customerkey='9d18'
OFFSET 5 ROWS FETCH FIRST 5 ROW ONLY;
→ Ссылка
Автор решения: Aziz Umarov

У меня была задачка на Postgress. Если результат запроса возвращает данные то вернуть данные + количество строк либо вернуть одну строчку с количеством строк и без данных. Откуда возникла задача. Есть grid с поиском и пагинацией, если данные возвращаются то отобразить их на гриде с указанием страницы и всего страниц, если нет то отобразить выбранную пустую страницу с указанием страницы и общим количеством страниц.

CREATE FUNCTION summary_list(
    in_login_id BIGINT, 
    in_sort_expression TEXT,
    in_filter_condition TEXT,
    in_skip BIGINT,
    in_page_size BIGINT
)  
RETURNS TABLE (
    hidden_row_count BIGINT,
    hidden_is_empty BOOLEAN,
   data columns
    .... 
)
AS $$

.....
FOR    
  data columns
  .... 
IN SELECT
      *
    FROM data
    OFFSET in_skip, in_page_size    
LOOP
  hidden_is_empty = false;
  RETURN NEXT;
END LOOP;    
IF hidden_is_empty THEN
  RETURN NEXT ;
END IF;
→ Ссылка