我知道集合应该是小的,它们应该保护不变量。我还知道,在Aggregates中保存大量集合会影响性能。
我有一个用法,那需要保护它的不变量,但也会导致大量的收藏。
聚合是Vendor,它可以有多个活动促进(S)。每个促进都有 StartDate和EndDate。不变量是:
PromotionTypeat 在任何时间点上都可以有最多一次促销,每一个时间点都可以有最大2次促销。
public Vendor : Aggregate {
public Guid Id;
public List<Promotion> Promotions;
// some other V
现在,我正在处理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
目前,我的数据库中有两个表:
列的“客户”:customer_id,customer_name
“支付”栏: payment_id,customer_id,年份,支付(bool),付款人
列“年份”表示“支付人”支付的年份。
这只给了我一个付费栏:
SELECT customer_id, paid AS paid_for_2017 FROM customers LEFT JOIN payments ON customers.customer_id=payments.customer_id AND year=2017;
现在,我需要一个SELECT查询,它为我提供以下内容:
cu