问下这个 SQL 怎么写,订单表获取每个用户最后三个商品种类统计,另外,送一个洗牙券

2020-06-06 20:22:45 +08:00
 undefind

测试数据如下:

TicketID	userid	goods_id	create_time
11012451        1012	1	2020-06-01 11:11:11
11012452        1012	2	2020-06-01 11:11:11
11012453        1012	3	2020-06-01 11:11:11
11012454        1012	1	2020-06-01 11:11:11
11012455        1012	1	2020-06-01 11:11:11
11012456        1012	2	2020-06-01 11:11:11
11012457        1012	2	2020-06-01 11:11:11
11012458        1012	2	2020-06-01 11:11:11
11012459        1012	3	2020-06-01 11:11:11
11012460        1012	3	2020-06-01 11:11:11
11012461        1034	1	2020-06-01 11:11:11
11012462        1034	2	2020-06-01 11:11:11
11012463        1034	3	2020-06-01 11:11:11
11012464        1034	1	2020-06-01 11:11:11
11012465        1034	1	2020-06-01 11:11:11
11012466        1034	2	2020-06-01 11:11:11
11012467        1034	2	2020-06-01 11:11:11
11012468        1034	2	2020-06-01 11:11:11
11012469        1034	3	2020-06-01 11:11:11
11012470        1034	3	2020-06-01 11:11:11

创建时间是不同的,这里没有显示出来。

我想要的结果是,每个用户最后三种商品的数量例如 userid 为 1012 的最后 3 种商品为 1 、2 、3,数量分别为 2 、3 、2,虽然前面也出现该商品但是不统计,这种能实现吗?

userid  	goodsid 	 count  
1012		1		  2  
1012		2		  3  
1012		3		  2  
1034		1		  2  
1034		2		  3  
1034		3		  2  
......

我尝试用分组,但是这个是统计所有的,每个用户最后三个商品的购买日期不同,不能直接按分组统计。 所以卡在这了。

另外,送一张微信泰康洗牙券,因为疫情原因,上个月北京这边也不让去,昨天用了一个,另一个快过期了,还有一两天,好像可以约到下个月,里面只有泰康拜博可以选。

2681 次点击
所在节点    问与答
30 条回复
wanv1171
2020-06-07 01:09:37 +08:00
@undefind https://www.db-fiddle.com/f/eh62B2B62Au3vddW3P3J7p/7 这个是统计从最后一单倒数三天内的
undefind
2020-06-07 01:11:00 +08:00
@wanv1171 抱歉,我觉得我表达错误,给你误导了,我的想法是 看最后几天这个人买的最后 3 种商品,并分别统计最后这几天的商品数量。就像我上面例子说的 goods_id:2 、2 、3 、1 、1 、1 、2 、3 、3,这个统计 goodsid 1 的有 3 个,goodsid 2 的有 1 个,goodsid 3 的有两个
undefind
2020-06-07 01:14:49 +08:00
@wanv1171 非常非常感谢,这个我试了符合我的需求。请您加我微信,给您发个小红包表达谢意 ZHlsYW4zMjE5ODc=
wanv1171
2020-06-07 01:15:56 +08:00
@undefind 哦,那也蛮简单的。把我的 cte 里面的 inner query 加一个 date filter 就解决了
wanv1171
2020-06-07 01:18:27 +08:00
@undefind 哈哈,这个微信号怎么加啊 🤣
undefind
2020-06-07 01:21:22 +08:00
@wanv1171 base64 解码一下😁
terlan
2020-06-07 03:58:48 +08:00
@undefind 我也想加😂
qinrui
2020-06-07 08:25:18 +08:00
按照 用户,商品 group 一次,取 max (流水号),拿到每个用户最后三种商品,然后用这个做条件,再来一次查询,即可了。


优惠券是不是可以来一个?
undefind
2020-06-07 10:06:43 +08:00
@terlan 不好意思哈,有 v 友加微信了,直接送给他啦
undefind
2020-06-07 10:10:37 +08:00
@qinrui 这样会分别把以前也买的三种商品的数量加到一起,我这边需要的是最后连续的 3 种商品,比如 goods_id:2 、2 、3 、1 、1 、1 、2 、3 、3,就只统计 1 、1 、1 、2 、3 、3 的数量,前面的 2 、2 、3 是不加到数量里的。
洗牙券有 v 友直接加微信了,然后送给他啦,不好意思哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/679254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX