powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как можно посчитать количество записей, полученных после запроса с группировкой?
14 сообщений из 14, страница 1 из 1
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32647903
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не подскажете, как можно посчитать количество записей, полученных после запроса с группировкой?

Я их считаю в ХП так:

KPK_2004 = 0;
FOR
SELECT SP.PREDMET, T.KOD FROM TEACHERS T
LEFT JOIN SUBJPARTICIPANTS SP ON T.KOD = SP.TEACHER
WHERE T.KOD IS NOT NULL
AND T.TERR = :UO AND EXTRACT(YEAR FROM (CAST (RTRIM(T.DATEKVALIF) AS DATE)))=2004
AND SP.PREDMET = :PREDMET_I
GROUP BY SP.PREDMET, T.KOD
INTO TEMP_PREDMET, TEMP_KOD
DO
KPK_2004 = :KPK_2004 +1;

Можно ли получить тот же самый результат ОДНИМ запросом?
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32647910
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожно ли получить тот же самый результат ОДНИМ запросом?
Получить где??? в ХП или на клиенте???
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648224
SEF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SEF
Гость
ДаниилНе подскажете, как можно посчитать количество записей, полученных после запроса с группировкой?

Я их считаю в ХП так:

KPK_2004 = 0;
FOR
SELECT SP.PREDMET, T.KOD FROM TEACHERS T
LEFT JOIN SUBJPARTICIPANTS SP ON T.KOD = SP.TEACHER
WHERE T.KOD IS NOT NULL
AND T.TERR = :UO AND EXTRACT(YEAR FROM (CAST (RTRIM(T.DATEKVALIF) AS DATE)))=2004
AND SP.PREDMET = :PREDMET_I
GROUP BY SP.PREDMET, T.KOD
INTO TEMP_PREDMET, TEMP_KOD
DO
KPK_2004 = :KPK_2004 +1;

Можно ли получить тот же самый результат ОДНИМ запросом?

А разве агрегатную функцию COUNT уже отменили?
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648343
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinПолучить где??? в ХП или на клиенте???
Одним SQL-запросом, а не подсчетом записей по одной перебором.


SEFА разве агрегатную функцию COUNT уже отменили?
Ну и как ее применить к этому случаю? Я про это и спрашиваю...
Мне надо что-то типа SELECT COUNT(*) FROM (SELECT ...)
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648517
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаниилОдним SQL-запросом, а не подсчетом записей по одной перебором.
Еще раз спрошу: ГДЕ ПОЛУЧИТЬ ТО НАДО??? Если на клиенте, чем самый обычный RecordCount для DataSet не устраивает или др его аналог. Если на в ХП, то вместо всего заголока только после select-а (без FOR) написать COUNT(*). Если возвращаемые переменные нужны, то чем мешает лишняя временная переменная.
Уточните проблему.
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648690
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз поясняю:
Одним SQL-запросом. Т.е. чтобы РЕЗУЛЬТАТ этого ЗАПРОСА = количество записей сгруппированного запроса.
Получить результат надо НА СЕРВЕРЕ, БЕЗ ИСПОЛЬЗОВАНИЯ ХП.
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648696
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinвместо всего заголока только после select-а (без FOR) написать COUNT(*)
Это как? Мне надо сначало сгруппировать, а потом посчитать, сколько их получилось.
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648726
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаниилЭто как? Мне надо сначало сгруппировать, а потом посчитать, сколько их получилось.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT COUNT(*) FROM TEACHERS T
                  LEFT JOIN SUBJPARTICIPANTS SP ON T.KOD = SP.TEACHER
                  WHERE T.KOD IS NOT NULL AND
                            T.TERR = :UO AND
                            EXTRACT(YEAR FROM (CAST (RTRIM(T.DATEKVALIF) AS DATE)))= 2004  AND
                            SP.PREDMET = :PREDMET_I
                            GROUP BY SP.PREDMET, T.KOD
Че так не работает?
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648742
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только сейчас заметил... ;)

У меня в запросе, который привожу в качестве примера, SP.PREDMET имеет одно и то же значение, группировать по нему не имеет смысла. Поэтому с одим "сгруппированным" полем считать количество записей можно так:

SELECT COUNT (DISTINCT T.KOD) FROM TEACHERS T
LEFT JOIN SUBJPARTICIPANTS SP ON T.KOD = SP.TEACHER
WHERE SP.PREDMET IS NOT NULL AND T.KOD IS NOT NULL
AND T.TERR = :UO AND EXTRACT(YEAR FROM (CAST (RTRIM(T.DATEKVALIF) AS DATE)))=2004
AND SP.PREDMET = :PREDMET

У меня оказался частный случай...

Но все-таки, если полей при группировке несколько (а DISTINCT не дает перечислять несколько полей), то как быть при подсчете количества записей?
С SINGULAR пробовал сделать - дык для него нет параметров, которые можно было написать в WHERE...
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648750
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinЧе так не работает?
Конечно нет. Это дает количество записей по КАЖДОЙ _сгруппированной_ - совсем не то.
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648753
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здается мне что ему надо сумму не всего а по группам... или как?
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648786
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млять!!! Да простит мне о всевышний
ДаниилУ меня оказался частный случай...
Где же он частный, если ты в условии написал SP.PREDMET = :PREDMET
И вообще накой DISTINCT и GROUP BY вообще использовать???
Попробуй без них
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32648828
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinГде же он частный, если ты в условии написал SP.PREDMET = :PREDMET
Дык и я про тож ;)
В этом конкретном случае GROUP BY идет по полю, на которое есть однозначное условие в WHERE. В других подобных запросах этого нет, поэтому я не сразу заметил.

wolverinИ вообще накой DISTINCT и GROUP BY вообще использовать???
Затем, чтоб повторяющиеся записи убрать из подсчета.
...
Рейтинг: 0 / 0
Как можно посчитать количество записей, полученных после запроса с группировкой?
    #32649227
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дошло таки до меня че надо - число групп!!!

ДаниилЗатем, чтоб повторяющиеся записи убрать из подсчета.
На мой взгляд , такую задачу в лоб (одним запросом с клиента) решить врядли удасться. Вот это появиться только в следующей версии FB
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как можно посчитать количество записей, полученных после запроса с группировкой?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]