без использования join и group by, это то, что я придумал, используя row_number()
для генерации уникальных строк по PURCHASE.RECEIPTNO
.
select count(distinct receipt_no) from (
select row_number() over (partition by SUBSTR(RECEIPTNO, 0, 3) order by message) rn
, SUBSTR(RECEIPTNO, 0, 3) as receipt_no
from PURCHASE)
where rn >= 10