2014-05-12 25 views
0

我們有表來跟蹤用戶訪問的產品頁面。在同一查詢中SQL兩個「group by」

product_tracking 
____________________ 
id user_id product 
1 1  A 
2 1  B 
3 2  A 
4 1  A 

我知道我們可以使用group by user_id和group_by產品,但我需要兩者。

預期結果:

result_table 
____________________________ 
user_id  A  B C 
    1   2  1 0 
    2   1  0 0 

任何想法如何通過合併2組?

+0

對於爲什麼一個計數兩次USER_ID = 1? –

+0

對不起我的壞。我會修好它。 –

+0

也許你應該向我們展示你想要數據合併的「如何」,所以我們可以告訴你是否以及如何完成。預期的結果集是什麼? – Frazz

回答

2

你可以這樣做:

SELECT 
    product_tracking.user_id, 
    SUM(CASE WHEN product_tracking.product='A' THEN 1 ELSE 0 END) AS A, 
    SUM(CASE WHEN product_tracking.product='B' THEN 1 ELSE 0 END) AS B, 
    SUM(CASE WHEN product_tracking.product='C' THEN 1 ELSE 0 END) AS C 
FROM 
    product_tracking 
GROUP BY 
    product_tracking.user_id 
+0

@nfmcclure:是的,你是對的。修復 ;) – Arion

1

使用SUM(...)的方法是使用計數(...):

SELECT product_tracking.user_id, COUNT(CASE WHEN product_tracking.product='A' THEN 1 END) AS A, COUNT(CASE WHEN product_tracking.product='B' THEN 1 END) AS B, COUNT(CASE WHEN product_tracking.product='C' THEN 1 END) AS C FROM product_tracking GROUP BY product_tracking.user_id