首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中添加包含前7个事务的新列

在SQL中添加包含前7个事务的新列
EN

Stack Overflow用户
提问于 2020-09-22 03:04:43
回答 1查看 41关注 0票数 1

对于客户细分,我需要分析在给定交易日期的基础上,客户在前7天、前14天等时间内进行了多少交易。已复制输入和所需的输出表

我试过用这个,但逻辑似乎不正确

代码语言:javascript
复制
UPDATE WU5
SET txnLast7Days = subquery.txnLast7Days
FROM
    (       
        SELECT  Transaction_Date, sum(dateCounts.transactionCount) OVER (ORDER BY Transaction_Date RANGE BETWEEN 7 PRECEDING AND CURRENT ROW) as txnLast7Days
        FROM (SELECT count(*) transactionCount, Transaction_Date FROM WU5 GROUP BY Transaction_Date) as dateCounts
    ) subquery
WHERE WU5.Transaction_Date = subquery.Transaction_Date

EN

回答 1

Stack Overflow用户

发布于 2020-09-22 03:07:11

您可以使用窗口函数和范围规范:

代码语言:javascript
复制
select w.*,
    count(*) over(
        partition by customer_id 
        order by transaction_date 
        range between interval 7 day preceding and interval 1 day preceding
    ) txnLast7Days,
    count(*) over(
        partition by customer_id 
        order by transaction_date 
        range between interval 14 day preceding and interval 1 day preceding
    ) txnLast14Days
from wu5 w

如果您需要一条update语句:

代码语言:javascript
复制
update wu5 w
inner join (
    select transaction_id,
        count(*) over(
            partition by customer_id 
            order by transaction_date 
            range between interval 7 day preceding and interval 1 day preceding
        ) txnLast7Days,
        count(*) over(
            partition by customer_id 
            order by transaction_date 
            range between interval 14 day preceding and interval 1 day preceding
        ) txnLast14Days
    from wu5 w
) w1 on w1.transaction_id = w.transaction_id
set w.txnLast7Days = w1.txnLast7Days, w.txnLast14Days = w1.txnLast7Days
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63998493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档