首页 文章

当在条件中迭代键值对时,可以避免while(t)-sql中的while循环

提问于
浏览
0

我想知道是否有可能在以下问题中避免(t)SQL中的for / while循环 .

这三个表:1 . CAMPAIGN:包含campaign_id列(Camp_ID)和描述广告系列开始日期的日期列(start_date)

  • SALE:包含customer_id列(Cust_ID),收入列(rev)和日期列(日期),表示客户在特定日期的收入

  • 选择:包含客户对营销活动的分配,因此(Cust_ID)和(Camp_ID)

那么我想知道的是:客户在营销活动中创造了哪些收入 .

所以混合python和SQL

for (CID, SD) IN CAMPAIGN:
    SELECT Cust_ID, SUM(rev)
    FROM SALE
    JOIN SELECTION
    ON SALE.Cust_ID = SELECTION.Cust_ID
    WHERE SELECTION.Camp_Id = CID AND SALE.date > SD

CID和SD指的是CAMPAIGN的Camp_Id和start_date

是否可以使用一些elemntary sql语法替换此for循环 . 我找到了使用游标和while循环的解决方案,然而,可能有一些更简单的东西,比如我看不到的一些分组和连接 .

1 回答

  • 1

    您可以通过CID将该条件放在 JOIN 和组中:

    SELECT CAMPAIGN.CID, Cust_ID, SUM(rev)
    FROM SALE
    JOIN SELECTION
        ON SALE.Cust_ID = SELECTION.Cust_ID
    INNER JOIN CAMPAIGN
        ON SELECTION.Camp_Id = CAMPAIGN.CID AND SALE.date > CAMPAIGN.SD
    GROUP BY CAMPAIGN.CID, Cust_ID
    

相关问题