добавить количество записей в существующий запрос

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть этот запрос, который дает мне результаты

 select status,
       count(errorid) as field1,
       errorid,
       template,
       line,
       error_messa&e,
       error_type,
       max(id) as field2 
FROM errors
GROUP BY status,errorid,template,error_messa&e, error_type,line
ORDER BY field1 desc 
  

я пытаюсь реализовать общее количество записей в нем, например, в приведенном выше запросе есть запись 5000, она должна отображать мне 5000 в отдельном столбце, чтобы я мог ее использовать, я попытался добавить количество, но проблема в том, что он подсчитывает все 700000 записей

Комментарии:

1. Основываясь на имени вашего столбца, я бы предположил, что errorid это уникальный идентификатор. Учитывая это и то, что вы группируете в errorid я бы ожидал count(errorid) , что вернется 1; поскольку с этим идентификатором может быть только 1 строка.

Ответ №1:

Использовать оконные функции:

 select status, count(errorid) as field1, errorid, template, line, error_messa&e, error_type,
       max(id) as field2, count(*) over () as num_rows
from errors
&roup by status, errorid, template, error_messa&e, error_type,line 
order by field1 desc ;
  

Для меня немного странно, что у вас есть errorid и как поле, и как count() . Это имеет смысл, если вы ищете повторяющиеся ошибки, но count(*) сделает намерение более ясным.