多谢老哥解惑,,因为你才注册了这个社区哈哈哈哈
我是大魔王哈哈
2021-02-04
因为主键是订单号,不能重复,即某个订单在这个表中只出现一次。一个订单中客户ID、付费时间是固定的唯一的,但是一个订单中的产品及产品金额不唯一。一个订单可以有一个或多个产品,如果有产品名称、产品金额字段,那某个订单可能在多行出现,不符合主键的约束
亨的瑞
2021-02-03
###问题01 按照ID分类,按照日期排序号
SELECT c_id, ROW_NUMBER() OVER ( PARTITION BY k.c_id ORDER BY k.c_id, k.order_date ) sn ,
k.order_date
FROM order_info k
WHERE order_date BETWEEN '20170101' AND '20171231'
GROUP BY k.c_id ,
order_date;
####练习
Select c_id ,row_number() over(partition by t.c_id order by t.order_date) 行序号,
t.order_date
From order_info t
WHERE order_date BETWEEN "20170101" AND "20171231"
GROUP BY t.c_id,t.order_date;
############################
###问题02 连续7天及以上无订单的用户ID,对应起止时间,持续天数
with ks
AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY k.c_id ORDER BY k.c_id, k.order_date ) sn ,
k.c_id ,
k.order_date
FROM order_info k
WHERE order_date BETWEEN '20170101' AND '20171231'
GROUP BY k.c_id ,
order_date
)
#两条序号相邻订单日期差值大于7
SELECT a.c_id ,
a.order_date + 1 ksrq ,
b.order_date - 1 jsrq ,
timestampdiff(day, a.order_date, b.order_date)-1 ts
FROM ks a ,
ks b
WHERE a.c_id = b.c_id
AND b.sn =a.sn + 1
AND timestampdiff(day, a.order_date, b.order_date) > 7;
##问题03,连续7天及以上有订单的用户ID,对应起止时间,持续天数
WITH ks
#按人分组查询订单日期和序号
AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY k.c_id ORDER BY k.c_id, k.order_date ) sn ,
k.c_id ,
k.order_date
FROM order_info k
WHERE order_date BETWEEN '20170101' AND '20171231'
GROUP BY k.c_id,
order_date
),
tj
#计算订单日期和其序号差值,差值相同的订单日期连续
AS ( SELECT c_id ,
order_date,
order_date - sn diff ,
sn
FROM ks
)
SELECT c_id ,
diff ,
MIN(order_date) ksrq ,
MAX(order_date) jsrq ,
COUNT(1) ts #每出现一次1,连续1天
FROM tj
GROUP BY c_id ,
diff
HAVING COUNT(1) > 7
ORDER BY c_id ,
diff;CDA助教老师
2021-01-31
答:in 判断时,每条记录与集合里的每一个记录比较,只要有一条记录比较相同,就返回true。所以,即使这个集合里有null,也不影响in的结果。
但not in就不一样了,not in要与集合中每条记录比较,每条记录都不相同才返回true。当集合中包含null时,每条记录与之比较都会不成立,所以返回的集合也必定为null
因此,not in 判断的集合不能包含null,而in判断的集合可以包括null。
ps:判断是否为null要用is关键字。
变质的瓜子
2021-01-26
画雷达图的时候需要注意,可以用循环在里面画很多图,但是进行坐标系整体设定的时候,需要将这些设定放到循环外面,否则会进行多次设定,比如你把图例添加放到循环里面,就会添加很多次图例,导致图例重复。
ermutuxia
2021-01-25
pip install pygal --user -i https://pypi.tuna.tsinghua.edu.cn/simple/
换用这个命令
WXQIfMw
2021-01-24