【问题标题】:Creating a trailing count on a table在表上创建尾随计数
【发布时间】:2017-03-04 02:55:52
【问题描述】:

我有一个表格,其中列出了已发送的各种营销电子邮件、已发送给谁以及发送日期。

我正在尝试构建一个列,其中包含过去 90 天内向该客户发送了多少联系人的值。

我一直在思考如何在 SQL 中编写代码。任何建议都会非常有帮助!

【问题讨论】:

  • 请编辑您的问题并提供示例数据和所需结果。还要用您正在使用的数据库标记您的问题。
  • 由于这会一直发生变化,您可能希望基于选择而不是拥有表格本身来创建视图。

标签: sql join count teradata


【解决方案1】:

current_date() 可能需要根据您的数据库进行替换。

select      customer
           ,count (*)   as contacts

from        mytable

where       contact_date >= current_date() - 90

group by    customer
;

【讨论】:

    【解决方案2】:

    假设表结构如下。

    MarketingEmails( CustomerID, Email, SentTo, SentDate );
    
    
    SELECT CustomerId,
           Email,
           SentTo,
           SentDate,
           COUNT(1) OVER ( PARTITION BY CustomerID,Email ORDER BY SentDate ) AS 
           CountofContactsbyCustomerEmail
      FROM MarketingEmails
     WHERE DATEDIFF(dd,GETDATE(),TO_DATE( SentDate ) ) >= 90;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      相关资源
      最近更新 更多