2017-07-07 70 views
2

看看這個SQL請求:計數和內部連接

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' 

比方說,我得到這樣一個結果:

id 
2 
1 
4 
5 

現在我想指望這些ID的價值有多少次出現如在表中的列的用戶id值erp.orders

例如,如果我有erp.orders.userId它是:

userId 
2 
2 
1 
4 
4 
5 
5 
5 

我想是要回到這個請求:

id number_of_id 
2 2 
1 1 
4 2 
5 3 

任何想法?

+0

你的代碼既不是MySQL也不是SQL Server,所以我刪除了這些標籤。請標記您真正使用的數據庫。 –

+2

提示:「GROUP BY」。 –

+0

對不起,它是postgresql。戈登會和你一起進入更多的細節嗎? –

回答

4

您需要使用count()函數和group by子句。它看起來像這樣:

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 
+0

非常感謝!它似乎現在工作! –

+2

@MerwaneHamadi:不要忘記接受,如果它充分回答你的問題! – McGlothlin