я натыкался следующее в хранимой процедуре:Получить количество отдельных групп в одном SQL-запросе в Firebird 1.5?
for
select 1
from scan_queue
where (date_time_locked is null )
and (scan_seqno >= :varMinScanSeqno)
and (scan_seqno <= :varMaxScanSeqno)
group by loan_id, collateral_id, insurance_id
into varNotUsed
do
varItemsToScan = varItemsToScan + 1;
Моя первая мысль была, что это, вероятно, является неэффективным способом подсчета количества групп, но моя вторая мысль была, «эй, как бы вы написать что в одном запросе? И у меня не было хорошего ответа. (Таким образом, это скорее академический вопрос.) Я не ищет решение, объединяющее идентификаторы, например, так:
select count(distinct loan_id || collateral_id || insurance_id)
from scan_queue
where (date_time_locked is null )
and (scan_seqno >= :varMinScanSeqno)
and (scan_seqno <= :varMaxScanSeqno)
Что является лучшим способом запроса этой информации?
EDIT: Поскольку я, по-видимому, не сделал этого достаточно ясным, я использую Firebird v1.5.
Я положил Firebird как тег, но только для уточнения, меня особенно интересует решение, которое работает с Firebird 1.5+ RDBMS. :) – Nelson
Этот комментарий достаточно важен, чтобы быть частью вопроса! Я даже не знал, что Firebird - это тип DB! :) –
@Aviad, я обновил вопрос в соответствии с вашими рекомендациями. Спасибо за ваш комментарий, потому что я относительно новичок и предположил, что тег будет достаточным (на самом деле это мой первый вопрос). – Nelson