2014-03-13 48 views
0

我有一張用戶表,每個訂單一個。每個訂單都附帶一個推薦人。我想選擇那些首次出現在表格中的用戶(通過order_id)具有「adwords」的引薦來源,並且在表格中有多個條目。選擇第一次出現的用戶具有adwords的引薦來源值,然後多出現一次

在這裏使用的列有: ORDER_ID - 每一個新的秩序得到一個新的order_id是一個更然後最後一個 billing_email - 用戶的電子郵件,這是我們如何知道它們是什麼用戶 來源 - 這是當他們通過adwords進入時設置爲adwords。

到目前爲止,我有這樣的:

select count(*) as num_entries, billing_email from tblOrder where referrer='adwords' GROUP BY billing_email HAVING count(*) > 1 

那不是在做什麼我要找的。

什麼,我希望看到一個結果是這樣的:

2, [email protected] 
4, [email protected] 

等於是告訴了我很多重複訂單的人來自AdWords如何做。

+0

上面的查詢完成了我所尋找的大部分工作。它會像我所要求的那樣返回計數,但它不會確保這些用戶在表中的第一個條目有一個adwords引用。那部分我不確定如何去做。 – danjfoley

回答

1

您的查詢需要稍微複雜一點,以達到您想要的效果。

首先,您需要一個內部查詢,以便您可以獲取每個billing_email的最小order_id。它還可讓您計算每個billing_email的總條目數量,因此您只能包含多個用戶。

然後,您必須使用該最小order_id回到同一個表中,並從該行獲取其餘數據。這將允許您查看每個用戶的最低order_id是否來自adwords。

SELECT T1.TableEntries, T1.billing_email FROM 
(
    SELECT billing_email, MIN(order_id) AS UsersFirstOrderID 
    , COUNT(*) AS TableEntries 
    FROM tblOrder 
    GROUP BY billing_email 
    HAVING TableEntries>1 
) AS T1 
JOIN 
tblOrder AS T2 
ON T1.UsersFirstOrderID=T2.order_id 
AND T2.referrer='adwords' 
相關問題