
使用两个用户变量并计算相同的连续store_id,您可以替换
<= 5为所需的任何限制
SELECt a.*FROM ( SELECt store_id, user_id, count(1) as visits FROM shopping WHERe store_id IN (60,61,62,63,64,65,66) GROUP BY store_id, user_id ORDER BY store_id, visits desc, user_id) a,(SELECT @prev:=-1, @count:=1) bWHERe CASE WHEN @prev<>a.store_id THEN CASE WHEN @prev:=a.store_id THEN @count:=1 END ELSE @count:=@count+1 END <= 5
根据要求编辑一些说明:
第一个子查询(a)是对数据进行分组和排序的子查询,因此您将拥有如下数据:
store_id | user_id | visits---------+---------+------- 601 5 602 3 603 1 612 4 613 2
第二个子查询(b)
@prev使用-1和
@count1初始化用户变量
然后从子查询中选择所有数据(a)验证中的条件
case。
验证
@prev
我们之前看到的store_id()是否与当前store_id不同。由于第一个@prev
等于-1,因此没有与当前store_id匹配的条件,因此<>
我们输入的条件为true,那么第二种情况就是@prev
使用当前store_id更改值。这是特技这样我就可以改变两个用户变量@count
和@prev
在相同条件下。如果先前的store_id等于
@prev
仅增加@count
变量。我们检查计数是否在我们想要的值之内,因此
<= 5
因此,根据我们的测试数据,您可以:
step | @prev | @count | store_id | user_id | visits-----+-------+--------+----------+---------+------- 0 -1 1 1 60 1 60 1 5 2 60 2 60 2 3 3 60 3 60 3 1 4 61 1 61 2 4 5 61 2 61 3 2
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)