我有一张用户表,每个订单一个。每个订单都带有引荐来源网址。我想选择那些在表中首次出现的用户(按order_id)具有“ 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, user@domain.com
4, user2@domain.com


等等,因此可以告诉我从adwords进行的交易中有多少重复订单。

最佳答案

您的查询需要稍微复杂一点才能完全按照您的要求工作。

首先,您需要一个内部查询,该查询将使您获得每个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'

关于mysql - 选择首次访问者的引荐来源网址值为adwords的用户,然后多次出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22387012/

10-12 01:13
查看更多