gpt4 book ai didi

mysql - SQL 仅获取与数据库中其他位置的最小日期相关的数据

转载 作者:行者123 更新时间:2023-11-29 07:47:55 24 4
gpt4 key购买 nike

我想用 Netflix 作为这个问题的例子,因为每个人都知道他们是谁。对于 Netflix,有帐户持有者和用户。

以我自己的 Netflix 帐户为例,我是帐户持有人(我每月付费),我的伴侣是用户,我的室友也是用户。因此 1 个帐户和 3 个用户。

我们想知道该帐户记入哪个营销 channel 。营销 channel 是用户级别的数据点,而不是帐户级别。因此,我们基于第一个帐户用户如何找到我们然后将其应用到帐户的逻辑。

这是我正在处理的查询:

SELECT 
my.data AS Account_ID,
co.ID AS User_ID,
def.def_medium,
MIN(co.created) # Don't ask why I used MIN here, was hoping it'd act like a WHERE clause.
FROM
abc_emails.cid208 co
INNER JOIN abc_emails.def208 def ON def.eid = co.id
INNER JOIN abc_emails.my208 my ON my.eid = co.id AND my.my_id = 2765
GROUP BY Account_ID, User_ID, def_medium

以下是该查询的结果示例:

    Account_ID | User_ID | Medium  | Created
1 447503 Email 2014-02-05 03:53:42
1 679769 Banner 2014-05-30 05:55:29
1000 6477 CPC 2007-01-22 10:03:03
10000 26805 Organic 2008-07-28 01:34:05
10000 151153 import 2011-06-16 06:57:41
10000 151154 2011-06-16 06:57:42
10000 151155 2011-06-16 06:57:42
10000 151156 2011-06-16 06:57:42
10000 151157 none 2011-06-16 06:57:42

因此,对于帐户 ID 1,User_ID 447503 看起来像是第一个已知联系人,因此媒介应该是电子邮件。帐户 1,000 似乎只有一个用户,因此使用 CPC。帐户 10,000 有多个用户,第一个已知用户是 Organic media。

所以我想改变这个查询来创建一个结果集,如下所示:

Account_ID | User_ID | Medium  | Created
1 447503 Email 2014-02-05 03:53:42
1000 6477 CPC 2007-01-22 10:03:03
10000 26805 Organic 2008-07-28 01:34:05

Account_ID 在结果集中是不同的 - 没有重复项。

  1. 我该怎么做
  2. 是否可以通过将 Created 字段一起从 SELECT 中删除来实现此目的?

最佳答案

有很多方法可以做到这一点,其中一些是

select t1.* from abc_emails t1
left join abc_emails t2 on t2.Account_ID = t1.Account_ID
and t1.Created > t2.Created
where t2.Account_ID is null;

或者

select t1.* from abc_emails t1
where not exists
(
select 1 from abc_emails t2
where t1.Account_ID = t2.Account_ID
and t1.Created > t2.Created
)

关于mysql - SQL 仅获取与数据库中其他位置的最小日期相关的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27236004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com