我知道集合应该是小的,它们应该保护不变量。我还知道,在Aggregates中保存大量集合会影响性能。
我有一个用法,那需要保护它的不变量,但也会导致大量的收藏。
聚合是Vendor,它可以有多个活动促进(S)。每个促进都有 StartDate和EndDate。不变量是:
PromotionTypeat 在任何时间点上都可以有最多一次促销,每一个时间点都可以有最大2次促销。
public Vendor : Aggregate {
public Guid Id;
public List<Promotion> Promotions;
// some other V
假设有一张表:
CUST_PROMO (customer_id,促销),用作客户收到的每个促销之间的映射。
select promotion, count(customer_id) as promo_size
from CUST_PROMO
group by promotion
这将为我们提供每次促销活动中的客户总数。
现在,我们有了CUSTOMER (customer_id,PROMO_RESPONDED,PROMO_PURCHASED),它列出了客户,哪些促销活动让客户做出了响应,哪些促销活动促使他们购买。
select PROMO_RESPONDED, count(customer_id
现在,我正在处理SQL文件,并有一个问题:我想回顾一下使用sql文件中的数据进行促销活动的效果。在SQL文件中有两个表,web流量和促销活动。
web流量表,假设表web如下所示
visitor_id purchase date traffic_source campaign_name country purchase_value
1 1/1/2018 Search promotion101 US 100
2 2/1/2018 Direct voucher02 UK
我想看看在过去的24小时,每周和每月,不同的促销活动是如何成功的。为了在过去24小时内通过促销获得金额,我使用了这个代码,但我不知道如何获得另外两个上周和上个月的专栏。最后,我想要按上周的降序数量进行排序。我希望能够在这个月的任何时候运行这个查询。请帮帮我。
SELECT Promotion
, Sum(Amount) AS Last_24
FROM dbo.CustomerPayment
WHERE Started >= DATEADD(day, - 1, GETDATE())
GROUP
BY Promotion
我还在纠结于这个:
抱歉重新措辞和重新发布..。
一旦我试图实现这些想法,我的想法就根本行不通。最大的问题是PK/FK字段似乎不兼容。这是我想到的两张桌子:
Campaign
PK Long campaignId
String description
Promotion
PK Long campaignId (FK to Campaign)
PK Long discount (unique set of discounts for the campaign)
String messgge
(每一项运动都有许多促销活动)
问题是,没有宣传对象,
我正在重新开发一个遗留系统,将一篮子用户选择的零售产品匹配到一个或多个有效的促销活动中。这些促销活动是行业标准BOGOF (买一到一免费),买两免费得到第三,购买产品X和Y,得到10%的折扣,等等.但是,所有这些都要求您可以将潜在项目的列表过滤到满足这些促销要求的项目中。
我希望解决办法是把一整篮子的零售物品放在一次操作中进行分析,而不是现有的一种方法,即在订购单一产品时进行匹配。(目前的解决方案导致不受欢迎的限制)
每个促销活动都有一系列合格的产品,这些产品必须存在才能触发促销活动。这些设置按n个集合(或多个位置)排列,例如:
Example "Buy two get third f