Postgres считает общее количество строк при условии, но игнорирует лимит и группирует по - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть запрос, который выглядит следующим образом:

SELECT t1.id, t1.name, t1.description
FROM t1
LEFT JOIN t2 ON (t2.id = t1.id)
WHERE condition
GROUP BY t1.id
LIMIT 100

Я хотел бы посчитать общее количество строк, которые удовлетворяют этому запросу, после превышения лимита в дополнение к возвращаемомууказанные столбцы (идентификатор, имя, описание).Проблема в том, что из-за GROUP BY, если бы я должен был сделать подсчет (*), я просто получаю кучу строк с 1.

Так что мой вопрос: как я могу посчитать количество строквозвращается по этому запросу?И как я могу это сделать, не обращая внимания на ограничение?

Также возможно ли вернуть количество строк и данные столбца в одном запросе?Или мне нужно использовать два запроса?

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете использовать подзапрос:

SELECT COUNT(*)
FROM (
  SELECT t1.id
  FROM t1
  LEFT JOIN t2 ON (t2.id = t1.id)
  WHERE condition
  GROUP BY t1.id) sub

РЕДАКТИРОВАТЬ:

Также возможно ли вернуть количество строк и данные столбца в одном запросе?Или мне нужно использовать два запроса?

Да, используя оконный COUNT:

SELECT t1.id, COUNT(*) OVER() AS num_of_r0ws
FROM t1
LEFT JOIN t2 ON (t2.id = t1.id)
WHERE condition
GROUP BY t1.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...