Reputation: 650
For Spring JPA , I am using the below native query and I need to implement pagination . For that , I need to have a count query which will return the rows returned by below query . How do I write the count query.
SELECT count(distinct opportunity_vendors.opportunity_id) as oppcount, vendors.name , count(applications.id) as appcount
FROM public.vendors
inner join public.opportunity_vendors on vendors.id = opportunity_vendors.vendor_id
inner join public.opportunities on opportunity_vendors.opportunity_id = opportunities.id
inner join public.applications on opportunity_vendors.opportunity_id = applications.opportunity_id
group by vendors.name having length(vendors.name) > 0;```
Upvotes: 0
Views: 59
Reputation: 1781
You can do something like this:
select count(*) from (
SELECT count(distinct opportunity_vendors.opportunity_id) as oppcount, vendors.name , count(applications.id) as appcount
FROM public.vendors
inner join public.opportunity_vendors on vendors.id = opportunity_vendors.vendor_id
inner join public.opportunities on opportunity_vendors.opportunity_id = opportunities.id
inner join public.applications on opportunity_vendors.opportunity_id = applications.opportunity_id
group by vendors.name having length(vendors.name) > 0
) d
Best regards,
Bjarni
Upvotes: 1
Reputation: 133380
You could use the query as a subquery .. a simple way is
select count(*)
from (
SELECT count(distinct opportunity_vendors.opportunity_id) as oppcount
, vendors.name
, count(applications.id) as appcount
FROM public.vendors
inner join public.opportunity_vendors on vendors.id = opportunity_vendors.vendor_id
inner join public.opportunities on opportunity_vendors.opportunity_id = opportunities.id
inner join public.applications on opportunity_vendors.opportunity_id = applications.opportunity_id
group by vendors.name
having length(vendors.name) > 0;
) t
Upvotes: 0