2014-11-05 69 views
0

我有這樣的SQL數據結構。Microsoft SQL - 每個值出現在其他列中的次數

http://pbrd.co/1EioUOw

的referrer_id是CUSTOMER_ID確定哪些CUSTOMER_ID已將另一個客戶的外鍵。 我想知道如何計算每個customer_id引用的人數。 在這樣的輸出中; 對於上面的例子,正確的輸出是;

http://pbrd.co/1EiplZj

我也想知道如何將結果限制爲僅前3名的引薦。

+1

只需'通過referrer_id'從my_table組中選擇referrer_id,計數(獨特的customer_id)。但是,如果要按照「如果Customer1引用Customer2和Customer2引用Customer3,然後Customer1引用Customer3」的方式處理它,則必須使用分層查詢:http://msdn.microsoft.com/zh-cn/library/bb677270.aspx – 0x0FFF 2014-11-05 15:19:18

回答

0

@ 0x0FFF在他的評論中提出的查詢是正確的,但它不會限制結果。要做到這一點,你可以這樣做:

select top 3 * from (
     select referrer_id, count(distinct customer_id) as cnt 
     from my_table group by referrer_id 
) order by cnt desc; 
相關問題