2012-08-03 85 views
2

當前的SQL語句:另外集團通過計數

SELECT count(installUserID) as userCount 
    FROM installUsers 
    group by installationID 

電流輸出:

userCount 
4 
2 
1 
1 
1 
2 
4 
1 
3 
1 

我想算的次數userCount爲1,以及2等。 。期望的輸出的

實施例:

userCount = 1, 5 times 
userCount = 2, 2 times 
userCount = 3, 1 times 
userCount = 4, 2 times 

我環視了一下互聯網,我想我可以用集合函數做些什麼,或許用grouping,但我仍然不清楚如何去實現這個純SQL。

+0

你幾乎已經是'選擇installUserID,通過installationID' – JonH 2012-08-03 18:05:46

回答

3

看來你想要計數的數量。要做到這一點,您可以使用外部選擇:

SELECT userCount, COUNT(*) AS userCountcount 
FROM 
(
    SELECT COUNT(installUserID) as userCount 
    FROM installUsers 
    GROUP BY installationID 
) AS T1 
GROUP BY userCount 
ORDER BY userCount 
+0

計數(installUserID)作爲USERCOUNT位 FROM installUsers 組爲什麼你需要爲這個內部select語句? – JonH 2012-08-03 18:03:25

+1

因爲a)「GROUP BY」是不同的,b)你不能嵌套聚合函數。我沒有說你*需要*內部選擇 - 你*可以*使用內部選擇...或者你可以使用CTE。這並沒有太大的區別。 – 2012-08-03 18:04:07

+0

CTE不是必需的,只需按同一列計算列和GROUP。 – JonH 2012-08-03 18:06:39

3

或者,您可以使用CTE。也許爲此過度殺戮,但卻有強大的方便。

WITH count_cte(usercount) 
AS 
(
    SELECT COUNT(installUserID) AS userCount 
    FROM installUsers 
    GROUP BY installationID 
) 

SELECT usercount ,COUNT(usercount) AS times FROM count_cte GROUP BY usercount