2014-07-08 68 views
0

我有類似表:迷茫中集團通過在MySQL

user_id  | action 

1    a1     
2    a1 
1    a1 
3    a1 
2    a1 
1    a2 
2    a2 

我必須找出誰已經用行動數量和用戶A1的數量做動作A1,用戶羣數量。

例如,在上表中,輸出應該是:

num_users   num_action_a1 
1 (user: 3)    1 
2 (user: 1,2)   2 

我嘗試下面的查詢

select user_id, count(user_id) from table where action = 'a1' group by user_id 

我必須通過使用嵌套組?

+2

你嘗試什麼查詢? – Gunaseelan

+0

從表中選擇user_id,count(user_id)其中action ='a1'group by user_id - 我對使用2組感到困惑 –

+0

請檢查http://stackoverflow.com/questions/1841426/is-it-possible-多個列使用mysql – Gunaseelan

回答

1

使用子查詢來獲取每個用戶ID的計數,然後從用戶和計數選擇: -

SELECT num_users, GROUP_CONCAT(user_id) AS actual_users , COUNT(*) AS num_action_a1 
FROM 
(
    SELECT user_id, COUNT(*) AS num_users 
    FROM some_table 
    WHERE action = 'a1' 
    GROUP BY user_id 
) sub0 
GROUP BY num_users 
+0

獲取此錯誤: 錯誤1248(42000):每個派生表都必須具有自己的別名 –

+0

只需要子查詢的別名(我剛剛將它添加爲sub0) – Kickstart