|
@@ -407,11 +407,238 @@ select toDate(formatDateTime(reg_time,'%Y-%m-%d')) dt,
|
|
|
def get_channel_order_trend(channel,pitcher,start,end,page,page_size,order_by,order):
|
|
|
if get_channel_belong_pitcher(channel)!=pitcher:
|
|
|
return [],0
|
|
|
- sql=""
|
|
|
+ sql=f"""select '{channel}' channel,toString(dt) date,book,cost,reg_order_amount,roi,new_follow_user,new_follow_per_cost,order_user,order_count,
|
|
|
+ order_user_per_cost,
|
|
|
+ concat(toString(r1),',',toString(r1/cost),',', toString(a1/cost),',',toString(b1)),
|
|
|
+ concat(toString(r2),',',toString(r2/cost),',', toString(a2/cost),',',toString(b2)),
|
|
|
+ concat(toString(r3),',',toString(r3/cost),',', toString(a3/cost),',',toString(b3)),
|
|
|
+ concat(toString(r4),',',toString(r4/cost),',', toString(a4/cost),',',toString(b4)),
|
|
|
+ concat(toString(r5),',',toString(r5/cost),',', toString(a5/cost),',',toString(b5)),
|
|
|
+ concat(toString(r6),',',toString(r6/cost),',', toString(a6/cost),',',toString(b6)),
|
|
|
+ concat(toString(r7),',',toString(r7/cost),',', toString(a7/cost),',',toString(b7)),
|
|
|
+ concat(toString(r8),',',toString(r8/cost),',', toString(a8/cost),',',toString(b8)),
|
|
|
+ concat(toString(r9),',',toString(r9/cost),',', toString(a9/cost),',',toString(b9)),
|
|
|
+ concat(toString(r10),',',toString(r10/cost),',', toString(a10/cost),',',toString(b10)),
|
|
|
+ concat(toString(r11),',',toString(r11/cost),',', toString(a11/cost),',',toString(b11)),
|
|
|
+ concat(toString(r12),',',toString(r12/cost),',', toString(a12/cost),',',toString(b12)),
|
|
|
+ concat(toString(r13),',',toString(r13/cost),',', toString(a13/cost),',',toString(b13)),
|
|
|
+ concat(toString(r14),',',toString(r14/cost),',', toString(a14/cost),',',toString(b14)),
|
|
|
+ concat(toString(r15),',',toString(r15/cost),',', toString(a15/cost),',',toString(b15)),
|
|
|
+ concat(toString(r16),',',toString(r16/cost),',', toString(a16/cost),',',toString(b16)),
|
|
|
+ concat(toString(r17),',',toString(r17/cost),',', toString(a17/cost),',',toString(b17)),
|
|
|
+ concat(toString(r18),',',toString(r18/cost),',', toString(a18/cost),',',toString(b18)),
|
|
|
+ concat(toString(r19),',',toString(r19/cost),',', toString(a19/cost),',',toString(b19)),
|
|
|
+ concat(toString(r20),',',toString(r20/cost),',', toString(a20/cost),',',toString(b20)),
|
|
|
+ concat(toString(r21),',',toString(r21/cost),',', toString(a21/cost),',',toString(b21)),
|
|
|
+ concat(toString(r22),',',toString(r22/cost),',', toString(a22/cost),',',toString(b22)),
|
|
|
+ concat(toString(r23),',',toString(r23/cost),',', toString(a23/cost),',',toString(b23)),
|
|
|
+ concat(toString(r24),',',toString(r24/cost),',', toString(a24/cost),',',toString(b24)),
|
|
|
+ concat(toString(r25),',',toString(r25/cost),',', toString(a25/cost),',',toString(b25)),
|
|
|
+ concat(toString(r26),',',toString(r26/cost),',', toString(a26/cost),',',toString(b26)),
|
|
|
+ concat(toString(r27),',',toString(r27/cost),',', toString(a27/cost),',',toString(b27)),
|
|
|
+ concat(toString(r28),',',toString(r28/cost),',', toString(a28/cost),',',toString(b28)),
|
|
|
+ concat(toString(r29),',',toString(r29/cost),',', toString(a29/cost),',',toString(b29)),
|
|
|
+ concat(toString(r30),',',toString(r30/cost),',', toString(a30/cost),',',toString(b30)),
|
|
|
+ concat(toString(r31),',',toString(r31/cost),',', toString(a31/cost),',',toString(b31)),
|
|
|
+ concat(toString(r32),',',toString(r32/cost),',', toString(a32/cost),',',toString(b32)),
|
|
|
+ concat(toString(r33),',',toString(r33/cost),',', toString(a33/cost),',',toString(b33)),
|
|
|
+ concat(toString(r34),',',toString(r34/cost),',', toString(a34/cost),',',toString(b34)),
|
|
|
+ concat(toString(r35),',',toString(r35/cost),',', toString(a35/cost),',',toString(b35)),
|
|
|
+ concat(toString(r36),',',toString(r36/cost),',', toString(a36/cost),',',toString(b36)),
|
|
|
+ concat(toString(r37),',',toString(r37/cost),',', toString(a37/cost),',',toString(b37)),
|
|
|
+ concat(toString(r38),',',toString(r38/cost),',', toString(a38/cost),',',toString(b38)),
|
|
|
+ concat(toString(r39),',',toString(r39/cost),',', toString(a39/cost),',',toString(b39)),
|
|
|
+ concat(toString(r40),',',toString(r40/cost),',', toString(a40/cost),',',toString(b40)),
|
|
|
+ concat(toString(r41),',',toString(r41/cost),',', toString(a41/cost),',',toString(b41)),
|
|
|
+ concat(toString(r42),',',toString(r42/cost),',', toString(a42/cost),',',toString(b42)),
|
|
|
+ concat(toString(r43),',',toString(r43/cost),',', toString(a43/cost),',',toString(b43)),
|
|
|
+ concat(toString(r44),',',toString(r44/cost),',', toString(a44/cost),',',toString(b44)),
|
|
|
+ concat(toString(r45),',',toString(r45/cost),',', toString(a45/cost),',',toString(b45)),
|
|
|
+ concat(toString(r46),',',toString(r46/cost),',', toString(a46/cost),',',toString(b46)),
|
|
|
+ concat(toString(r47),',',toString(r47/cost),',', toString(a47/cost),',',toString(b47)),
|
|
|
+ concat(toString(r48),',',toString(r48/cost),',', toString(a48/cost),',',toString(b48)),
|
|
|
+ concat(toString(r49),',',toString(r49/cost),',', toString(a49/cost),',',toString(b49)),
|
|
|
+ concat(toString(r50),',',toString(r50/cost),',', toString(a50/cost),',',toString(b50)),
|
|
|
+ concat(toString(r51),',',toString(r51/cost),',', toString(a51/cost),',',toString(b51)),
|
|
|
+ concat(toString(r52),',',toString(r52/cost),',', toString(a52/cost),',',toString(b52)),
|
|
|
+ concat(toString(r53),',',toString(r53/cost),',', toString(a53/cost),',',toString(b53)),
|
|
|
+ concat(toString(r54),',',toString(r54/cost),',', toString(a54/cost),',',toString(b54)),
|
|
|
+ concat(toString(r55),',',toString(r55/cost),',', toString(a55/cost),',',toString(b55)),
|
|
|
+ concat(toString(r56),',',toString(r56/cost),',', toString(a56/cost),',',toString(b56)),
|
|
|
+ concat(toString(r57),',',toString(r57/cost),',', toString(a57/cost),',',toString(b57)),
|
|
|
+ concat(toString(r58),',',toString(r58/cost),',', toString(a58/cost),',',toString(b58)),
|
|
|
+ concat(toString(r59),',',toString(r59/cost),',', toString(a59/cost),',',toString(b59)),
|
|
|
+ concat(toString(r60),',',toString(r60/cost),',', toString(a60/cost),',',toString(b60)),
|
|
|
+concat(toString(r120),',',toString(r120/cost),',', toString(a120/cost),',',toString(b120)),
|
|
|
+ concat(toString(r150),',',toString(r150/cost),',', toString(a150/cost),',',toString(b150))
|
|
|
+from
|
|
|
+ (
|
|
|
+select dt,book,cost,reg_order_amount,
|
|
|
+ if(cost=0,0,reg_order_amount/cost) roi,
|
|
|
+ follow_user new_follow_user,
|
|
|
+ if(follow_user=0,0,cost/follow_user) new_follow_per_cost,
|
|
|
+ reg_order_user order_user, reg_order_count order_count,
|
|
|
+ if(reg_order_user=0,0,cost/reg_order_user) order_user_per_cost
|
|
|
+ from dw_daily_channel where dt>='{start}' and dt<='{end}' and channel='{channel}' and cost>0) a
|
|
|
|
|
|
- total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
|
|
|
- a=''
|
|
|
- return a,total
|
|
|
+left outer join (
|
|
|
+select toDate(formatDateTime(reg_time,'%Y-%m-%d')) dt,
|
|
|
+ sum(if(subtractDays(date, 1)>=reg_time,0,amount)) as r1,
|
|
|
+ sum(if(subtractDays(date, 2)>=reg_time,0,amount)) as r2,
|
|
|
+ sum(if(subtractDays(date, 3)>=reg_time,0,amount)) as r3,
|
|
|
+ sum(if(subtractDays(date, 4)>=reg_time,0,amount)) as r4,
|
|
|
+ sum(if(subtractDays(date, 5)>=reg_time,0,amount)) as r5,
|
|
|
+ sum(if(subtractDays(date, 6)>=reg_time,0,amount)) as r6,
|
|
|
+ sum(if(subtractDays(date, 7)>=reg_time,0,amount)) as r7,
|
|
|
+ sum(if(subtractDays(date, 8)>=reg_time,0,amount)) as r8,
|
|
|
+ sum(if(subtractDays(date, 9)>=reg_time,0,amount)) as r9,
|
|
|
+ sum(if(subtractDays(date, 10)>=reg_time,0,amount)) as r10,
|
|
|
+ sum(if(subtractDays(date, 11)>=reg_time,0,amount)) as r11,
|
|
|
+ sum(if(subtractDays(date, 12)>=reg_time,0,amount)) as r12,
|
|
|
+ sum(if(subtractDays(date, 13)>=reg_time,0,amount)) as r13,
|
|
|
+ sum(if(subtractDays(date, 14)>=reg_time,0,amount)) as r14,
|
|
|
+ sum(if(subtractDays(date, 15)>=reg_time,0,amount)) as r15,
|
|
|
+ sum(if(subtractDays(date, 16)>=reg_time,0,amount)) as r16,
|
|
|
+ sum(if(subtractDays(date, 17)>=reg_time,0,amount)) as r17,
|
|
|
+ sum(if(subtractDays(date, 18)>=reg_time,0,amount)) as r18,
|
|
|
+ sum(if(subtractDays(date, 19)>=reg_time,0,amount)) as r19,
|
|
|
+ sum(if(subtractDays(date, 20)>=reg_time,0,amount)) as r20,
|
|
|
+ sum(if(subtractDays(date, 21)>=reg_time,0,amount)) as r21,
|
|
|
+ sum(if(subtractDays(date, 22)>=reg_time,0,amount)) as r22,
|
|
|
+ sum(if(subtractDays(date, 23)>=reg_time,0,amount)) as r23,
|
|
|
+ sum(if(subtractDays(date, 24)>=reg_time,0,amount)) as r24,
|
|
|
+ sum(if(subtractDays(date, 25)>=reg_time,0,amount)) as r25,
|
|
|
+ sum(if(subtractDays(date, 26)>=reg_time,0,amount)) as r26,
|
|
|
+ sum(if(subtractDays(date, 27)>=reg_time,0,amount)) as r27,
|
|
|
+ sum(if(subtractDays(date, 28)>=reg_time,0,amount)) as r28,
|
|
|
+ sum(if(subtractDays(date, 29)>=reg_time,0,amount)) as r29,
|
|
|
+ sum(if(subtractDays(date, 30)>=reg_time,0,amount)) as r30,
|
|
|
+ sum(if(subtractDays(date, 31)>=reg_time,0,amount)) as r31,
|
|
|
+ sum(if(subtractDays(date, 32)>=reg_time,0,amount)) as r32,
|
|
|
+ sum(if(subtractDays(date, 33)>=reg_time,0,amount)) as r33,
|
|
|
+ sum(if(subtractDays(date, 34)>=reg_time,0,amount)) as r34,
|
|
|
+ sum(if(subtractDays(date, 35)>=reg_time,0,amount)) as r35,
|
|
|
+ sum(if(subtractDays(date, 36)>=reg_time,0,amount)) as r36,
|
|
|
+ sum(if(subtractDays(date, 37)>=reg_time,0,amount)) as r37,
|
|
|
+ sum(if(subtractDays(date, 38)>=reg_time,0,amount)) as r38,
|
|
|
+ sum(if(subtractDays(date, 39)>=reg_time,0,amount)) as r39,
|
|
|
+ sum(if(subtractDays(date, 40)>=reg_time,0,amount)) as r40,
|
|
|
+ sum(if(subtractDays(date, 41)>=reg_time,0,amount)) as r41,
|
|
|
+ sum(if(subtractDays(date, 42)>=reg_time,0,amount)) as r42,
|
|
|
+ sum(if(subtractDays(date, 43)>=reg_time,0,amount)) as r43,
|
|
|
+ sum(if(subtractDays(date, 44)>=reg_time,0,amount)) as r44,
|
|
|
+ sum(if(subtractDays(date, 45)>=reg_time,0,amount)) as r45,
|
|
|
+ sum(if(subtractDays(date, 46)>=reg_time,0,amount)) as r46,
|
|
|
+ sum(if(subtractDays(date, 47)>=reg_time,0,amount)) as r47,
|
|
|
+ sum(if(subtractDays(date, 48)>=reg_time,0,amount)) as r48,
|
|
|
+ sum(if(subtractDays(date, 49)>=reg_time,0,amount)) as r49,
|
|
|
+ sum(if(subtractDays(date, 50)>=reg_time,0,amount)) as r50,
|
|
|
+ sum(if(subtractDays(date, 51)>=reg_time,0,amount)) as r51,
|
|
|
+ sum(if(subtractDays(date, 52)>=reg_time,0,amount)) as r52,
|
|
|
+ sum(if(subtractDays(date, 53)>=reg_time,0,amount)) as r53,
|
|
|
+ sum(if(subtractDays(date, 54)>=reg_time,0,amount)) as r54,
|
|
|
+ sum(if(subtractDays(date, 55)>=reg_time,0,amount)) as r55,
|
|
|
+ sum(if(subtractDays(date, 56)>=reg_time,0,amount)) as r56,
|
|
|
+ sum(if(subtractDays(date, 57)>=reg_time,0,amount)) as r57,
|
|
|
+ sum(if(subtractDays(date, 58)>=reg_time,0,amount)) as r58,
|
|
|
+ sum(if(subtractDays(date, 59)>=reg_time,0,amount)) as r59,
|
|
|
+ sum(if(subtractDays(date, 60)>=reg_time,0,amount)) as r60,
|
|
|
+ sum(if(subtractDays(date, 90)>=reg_time,0,amount)) as r90,
|
|
|
+ sum(if(subtractDays(date, 120)>=reg_time,0,amount)) as r120,
|
|
|
+ sum(if(subtractDays(date, 150)>=reg_time,0,amount)) as r150,
|
|
|
+ 0 a1,1 b1,
|
|
|
+ r2-r1 a2,if(r1=0,0,r2/r1) b2,
|
|
|
+r3-r2 a3,if(r1=0,0,r3/r1) b3,
|
|
|
+r4-r3 a4,if(r1=0,0,r4/r1) b4,
|
|
|
+r5-r4 a5,if(r1=0,0,r5/r1) b5,
|
|
|
+r6-r5 a6,if(r1=0,0,r6/r1) b6,
|
|
|
+r7-r6 a7,if(r1=0,0,r7/r1) b7,
|
|
|
+r8-r7 a8,if(r1=0,0,r8/r1) b8,
|
|
|
+r9-r8 a9,if(r1=0,0,r9/r1) b9,
|
|
|
+r10-r9 a10,if(r1=0,0,r10/r1) b10,
|
|
|
+r11-r10 a11,if(r1=0,0,r11/r1) b11,
|
|
|
+r12-r11 a12,if(r1=0,0,r12/r1) b12,
|
|
|
+r13-r12 a13,if(r1=0,0,r13/r1) b13,
|
|
|
+r14-r13 a14,if(r1=0,0,r14/r1) b14,
|
|
|
+r15-r14 a15,if(r1=0,0,r15/r1) b15,
|
|
|
+r16-r15 a16,if(r1=0,0,r16/r1) b16,
|
|
|
+r17-r16 a17,if(r1=0,0,r17/r1) b17,
|
|
|
+r18-r17 a18,if(r1=0,0,r18/r1) b18,
|
|
|
+r19-r18 a19,if(r1=0,0,r19/r1) b19,
|
|
|
+r20-r19 a20,if(r1=0,0,r20/r1) b20,
|
|
|
+r21-r20 a21,if(r1=0,0,r21/r1) b21,
|
|
|
+r22-r21 a22,if(r1=0,0,r22/r1) b22,
|
|
|
+r23-r22 a23,if(r1=0,0,r23/r1) b23,
|
|
|
+r24-r23 a24,if(r1=0,0,r24/r1) b24,
|
|
|
+r25-r24 a25,if(r1=0,0,r25/r1) b25,
|
|
|
+r26-r25 a26,if(r1=0,0,r26/r1) b26,
|
|
|
+r27-r26 a27,if(r1=0,0,r27/r1) b27,
|
|
|
+r28-r27 a28,if(r1=0,0,r28/r1) b28,
|
|
|
+r29-r28 a29,if(r1=0,0,r29/r1) b29,
|
|
|
+r30-r29 a30,if(r1=0,0,r30/r1) b30,
|
|
|
+r31-r30 a31,if(r1=0,0,r31/r1) b31,
|
|
|
+r32-r31 a32,if(r1=0,0,r32/r1) b32,
|
|
|
+r33-r32 a33,if(r1=0,0,r33/r1) b33,
|
|
|
+r34-r33 a34,if(r1=0,0,r34/r1) b34,
|
|
|
+r35-r34 a35,if(r1=0,0,r35/r1) b35,
|
|
|
+r36-r35 a36,if(r1=0,0,r36/r1) b36,
|
|
|
+r37-r36 a37,if(r1=0,0,r37/r1) b37,
|
|
|
+r38-r37 a38,if(r1=0,0,r38/r1) b38,
|
|
|
+r39-r38 a39,if(r1=0,0,r39/r1) b39,
|
|
|
+r40-r39 a40,if(r1=0,0,r40/r1) b40,
|
|
|
+r41-r40 a41,if(r1=0,0,r41/r1) b41,
|
|
|
+r42-r41 a42,if(r1=0,0,r42/r1) b42,
|
|
|
+r43-r42 a43,if(r1=0,0,r43/r1) b43,
|
|
|
+r44-r43 a44,if(r1=0,0,r44/r1) b44,
|
|
|
+r45-r44 a45,if(r1=0,0,r45/r1) b45,
|
|
|
+r46-r45 a46,if(r1=0,0,r46/r1) b46,
|
|
|
+r47-r46 a47,if(r1=0,0,r47/r1) b47,
|
|
|
+r48-r47 a48,if(r1=0,0,r48/r1) b48,
|
|
|
+r49-r48 a49,if(r1=0,0,r49/r1) b49,
|
|
|
+r50-r49 a50,if(r1=0,0,r50/r1) b50,
|
|
|
+r51-r50 a51,if(r1=0,0,r51/r1) b51,
|
|
|
+r52-r51 a52,if(r1=0,0,r52/r1) b52,
|
|
|
+r53-r52 a53,if(r1=0,0,r53/r1) b53,
|
|
|
+r54-r53 a54,if(r1=0,0,r54/r1) b54,
|
|
|
+r55-r54 a55,if(r1=0,0,r55/r1) b55,
|
|
|
+r56-r55 a56,if(r1=0,0,r56/r1) b56,
|
|
|
+r57-r56 a57,if(r1=0,0,r57/r1) b57,
|
|
|
+r58-r57 a58,if(r1=0,0,r58/r1) b58,
|
|
|
+r59-r58 a59,if(r1=0,0,r59/r1) b59,
|
|
|
+r60-r59 a60,if(r1=0,0,r60/r1) b60,
|
|
|
+r120-r60 a120,if(r1=0,0,r120/r1) b120,
|
|
|
+r150-r120 a150,if(r1=0,0,r150/r1) b150
|
|
|
+from order where channel='{channel}' and dt>='{start}' group by formatDateTime(reg_time,'%Y-%m-%d')
|
|
|
+ ) b on a.dt=b.dt
|
|
|
+"""
|
|
|
+ if start==end:
|
|
|
+ total=1
|
|
|
+ else:
|
|
|
+ total = ck.execute(f"select count(1) from ({sql}) a")[0][0]
|
|
|
+ sql += f" order by {order_by} {order} limit {page},{page_size} "
|
|
|
+
|
|
|
+ data=get_round(ck.execute(sql))
|
|
|
+ # print(data)
|
|
|
+ def parse(str):
|
|
|
+ li=str.split(',')
|
|
|
+ li[0]=round(float(li[0]),2)
|
|
|
+ li[1]=round(float(li[1]),4)
|
|
|
+ li[2]=round(float(li[2]),4)
|
|
|
+ li[3]=round(float(li[3]),2)
|
|
|
+ return dict(zip(['order','roi','add','mult'],li))
|
|
|
+
|
|
|
+ for i in data:
|
|
|
+ for x,y in enumerate(i):
|
|
|
+ if x>=11:
|
|
|
+ i[x]=parse(y)
|
|
|
+ print(data)
|
|
|
+ key=['date','channel','book','cost','reg_amount','roi','new_follow_user','new_follow_per_cost','order_user','order_count',
|
|
|
+ 'order_user_per_cost','d1','d2','d3','d4','d5','d6','d7','d8','d9','d10','d11','d12','d13','d14','d15','d16','d17','d18',
|
|
|
+ 'd19','d20','d21','d22','d23','d24','d25','d26','d27','d28','d29','d30','d31','d32','d33','d34','d35','d36','d37','d38',
|
|
|
+ 'd39','d40','d41','d42','d43','d44','d45','d46','d47','d48','d49','d50','d51','d52','d53','d54','d55','d56','d57','d58','d59',
|
|
|
+ 'd60','m3','m4','m5']
|
|
|
+
|
|
|
+ return get_dict_list(key,data),total
|
|
|
|
|
|
def get_channel_summary(channel,pitcher,page,page_size,order_by,order):
|
|
|
|
|
@@ -463,7 +690,8 @@ def get_channel_summary(channel,pitcher,page,page_size,order_by,order):
|
|
|
if __name__ == '__main__':
|
|
|
# a=get_channel_overview('','','',1,10,'date','desc')
|
|
|
# a=get_channel_summary('','')
|
|
|
- a=get_channel_again_order_trend('龙鳞文学','2021-01-01','宋刚')
|
|
|
+ # a=get_channel_again_order_trend('龙鳞文学','2021-01-01','宋刚')
|
|
|
# a=get_channel_active('玉龙书社','2020-09-15','2020-09-20',1,10,'date','desc')
|
|
|
- # print(a)
|
|
|
+ a,b =get_channel_order_trend("玉龙书社",'王俊杰','2020-12-01','2020-12-12',1,5,'date','desc')
|
|
|
+ print(a,b)
|
|
|
pass
|