我有一个用户表,每个订单一个。每个订单都附带一个推荐人。我想选择那些第一次出现在表格中的用户(通过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。
答案 0 :(得分: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'