2015-08-18 105 views
0

我試圖創建一個頻率分佈顯示有多少客戶交易1X,2X,3X等如何創建頻率分佈?

我有一個數據庫transactions和列user_id。每行表示一個事務,並且如果user_id出現在多行中,則該用戶已經完成多個事務。

現在我想獲得一個看起來像這樣的列表:

Tra. | Freq. 
0  | 345 
1  | 543 
2  | 45 
3  | 20 
4  | 0 
5  | 3 
etc 

目前我有這一點,但它只是顯示用戶的列表,以及有多少交易,他們都有過。

SELECT user_id, COUNT(user_id) as number_of_transactions 
FROM transactions 
GROUP BY user_id 
ORDER BY number_of_transactions DESC; 

我做了一些挖掘,並建議generate_series可能有幫助,但我堅持,不知道如何前進。

+0

提示:你需要的是頻率的頻率。 (你需要一個額外的聚合層) – wildplasser

回答

0

使用的第一個結果輸入到您再次應用計數的外部查詢,但number_of_transactions這次分組:

SELECT number_of_transactions, COUNT(*) AS freq 
FROM (
    SELECT user_id, COUNT(user_id) as number_of_transactions 
    FROM transactions 
    GROUP BY user_id 
) A 
GROUP BY number_of_transactions; 

這將改變結果,如:

user_id  number_of_transactions 
----------- ---------------------- 
1   2 
2   1 
3   2 
4   4 

到這個:

number_of_transactions freq 
---------------------- ----------- 
1      1 
2      2 
4      1 
+0

謝謝@jpw,這工作完美,我學到了一些關於內部和外部查詢的新內容! –

+0

@SiamChoudhury很高興有幫助:) – jpw