1、2023年4月份的使用者數、訂單量、銷量、gmv (不侷限與這些統計量,你也可以自己想一些)
-- -- -- 2023年4月份的使用者數量
select
count(a.user_id) as user_nums
from
( select
user_id
from
where
dt >= '2018-04-01'
and sale_ord_dt <= '2018-04-30'
and sale_ord_dt >= '2018-04-01'
group by
user_id
) a;
-- 2023年4月份的訂單量
select
count(a.sale_ord_id) as sale_nums
from
( select
sale_ord_id
from
where
dt >= '2018-04-01'
and sale_ord_dt <= '2018-04-30'
and sale_ord_dt >= '2018-04-01'
group by
sale_ord_id
) a;
-- -- 2023年4月份的銷量
select
sum(coalesce(sale_qtty, 0)) as xiaoliang
from
where
dt >= '2018-04-01'
and sale_ord_dt <= '2018-04-30'
and sale_ord_dt >= '2018-04-01';
-- -- -- 2023年4月份的銷售額gmv
-- user_payable_pay_amount 使用者應付金額
select
sum(user_payable_pay_amount) as xiaoshoujine
from
where
dt >= '2018-04-01'
and sale_ord_dt <= '2018-04-30'
and sale_ord_dt >= '2018-04-01';
ps:
2、上述這些變化量相對3月份的變化
3、計算2023年4月1號的新使用者數量(之前半年未購買的使用者為新使用者)
-- 計算2023年4月1號的新使用者數量(之前半年未購買的使用者為新使用者)
-- 首先找出4月1號的使用者的***,然後統計半年內有過購買記錄的使用者yyy。
-- select distinct user_id as *** from gdm_m04_ord_det_sum where dt>='2018-04-01' and sale_ord_dt='2018-04-01';
-- select distinct user_id as yyy from gdm_m04_ord_det_sum where dt>='2017-10-01' and sale_ord_dt<='2018-03-31' and sale_ord_dt>='2017-10-01';
-- 用***-yyy,然後count()計算數量;
-- 兩種方法,一種用not in ,一種用not exists
-- not in 方法
select distinct user_id from gdm_m04_ord_det_sum
where user_id not in (select distinct user_id from gdm_m04_ord_det_sum where dt>='2017-10-01' and sale_ord_dt<='2018-03-31' and sale_ord_dt>='2017-10-01');
-- not exists 方法
select distinct user_id from gdm_m04_ord_det_sum where dt>='2018-04-01' and sale_ord_dt='2018-04-01' where not exists (select distinct user_id from gdm_m04_ord_det_sum where dt>='2017-10-01' and sale_ord_dt<='2018-03-31' and sale_ord_dt>='2017-10-01' where gdm_m04_ord_det_sum.user_id=gdm_m04_ord_det_sum.user_id);
-- 另一種 left outer join 這樣效率更高 語法有問題??
select distinct user_id from gdm_m04_ord_det_sum where dt>='2018-04-01' and sale_ord_dt='2018-04-01' a left outer join (select distinct user_id from gdm_m04_ord_det_sum where dt>='2017-10-01' and sale_ord_dt<='2018-03-31' and sale_ord_dt>='2017-10-01' b) on a.user_id=b.user_id where b.user_id is null;
正確方法:
select
count(a.id1) as user_new_nums
from
( select distinct
user_id as id1
from
where
dt >= '2018-04-01'
and sale_ord_dt = '2018-04-01'
) aleft outer join
( select distinct
user_id as id2
from
where
dt >= '2017-10-01'
and sale_ord_dt <= '2018-03-31'
and sale_ord_dt >= '2017-10-01'
) bon a.id1 = b.id2
where
b.id2 is null;
C 簡單任務池
今天編寫乙個非同步通訊框架的,非同步派發任務,單路併發,與直接invoke相比的好處是可以使任務的執行代價根據時間均勻化,請看 public class servicetask private action action public void execute public class servic...
FreeRTOS簡單任務排程實現
ifndef rtos h define rtos h include freertos.h include task.h define pex rtos start rtos start void rtos start void void freertos task1 void pvparamet...
Python系列之簡單任務框架
近期由於興趣選擇了python用來開發一款輔助工具,當多工的時候需要順序的執行,方便的動態載入或移除不需要的任務。這不是我第一次接觸指令碼類語言,所以對python上手比較容易。我選擇了pyqt作為介面工具,後台部分需要方便的修改,暫時沒有尋找適合的,由於處於邊學邊用的階段,如果不對,還請指正,謝謝...