gpt4 book ai didi

sql - 随着时间的推移对重复条目进行不同计数

转载 作者:行者123 更新时间:2023-12-04 21:49:02 25 4
gpt4 key购买 nike

这是我的第一个 stackoverflow 问题,所以请保持温和 ;-)

我有一个包含唯一客户 ID 的表和一个包含特定交易类型(购买、预售等)的交易的表

我要统计的是所有做过一次特定交易类型的客户。但如果客户在 2014 年进行了符合条件的交易,我不希望该客户在 2015 年再次被计算在内。这有意义吗?

我尝试了以下语句:

SELECT

datepart(yyyy,t.TransactionDate)
,count(DISTINCT c.customerID)

FROM Customers as c

JOIN Transactions as t
ON c.CustomerID = t.CustomerID

WHERE t.TransactionType = 'presell'
GROUP BY datepart(yyyy,t.TransactionDate)

问题是,客户当然可以每年进行一次相同的交易类型。因此,根据这个声明,我计算了每年不同的客户......而不是总共一次。

编辑: 让我们让它更容易一些。只有一张 table ,这张 table 看起来有点像这样:

CustomerTable

所以如果我过滤“预售”,我的结果应该看起来有点像这样

enter image description here

2014 年,客户 A 进行了预售,2015 年,客户 B 进行了预售,2016 年,客户 A 再次进行了预售,但我不计算这个客户,因为我在 2014 年已经计算过了。希望能让事情变得更清楚.

在此感谢您的任何建议和帮助。

最佳答案

当您查看它时,它是您感兴趣的每个客户的第一个预售。您可以通过为每个客户选择 MIN(TransactionDate) 轻松获得它。完成此操作后,您就可以数数了。

select year, count(*)
from
(
select customerid, min(transactiondate) as year
from transactions
where transactiontype = 'Presell'
group by customerid
) first_presells
group by year
order by year;

关于sql - 随着时间的推移对重复条目进行不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37190787/

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