misterone
misterone

Reputation: 361

Count and inner join

Look at this sql request:

select distinct erp.users.id 
from erp.users
inner join prod.referral_order_delivered
on erp.users.id= prod.referral_order_delivered.user_id::uuid
inner join erp.orders 
on erp.orders."userId"::uuid= erp.users.id
where
    "paidAt"::date >= '2016-06-07'
    and "paidAt"::date <= '2017-07-07'

Let’s say I get a result like this one:

id 
2
1
4
5

Now I wanna count how many times the value of these ids appear as value of the column userId in the table erp.orders

For example, if I have erp.orders.userId which is:

userId
2
2
1
4
4
5
5
5

I want the request that is gonna return this:

id  number_of_id
2   2
1   1
4   2
5   3

Any ideas?

Upvotes: 2

Views: 53

Answers (1)

Jacobm001
Jacobm001

Reputation: 4539

You need to use the count() function and a group by clause. It'll look something like:

select 
  erp.users.id
  , count(1)
from 
  erp.users
  inner join prod.referral_order_delivered
    on erp.users.id = prod.referral_order_delivered.user_id::uuid
  inner join erp.orders 
    on erp.orders."userId"::uuid = erp.users.id
where
    "paidAt"::date     >= '2016-06-07'
    and "paidAt"::date <= '2017-07-07'
group by
    erp.users.id

Upvotes: 4

Related Questions