如何判断顾客连续三天都来消费切每天消费大于两笔

捕获.JPG

捕获3.JPG

图一是帆软里设计,图二是预览结果。统计某张卡号在一周里每天来消费的笔数,现在要加一列,找出那些 连续三天来店消费切每天消费笔数大于两笔的考号。

如果导出excel后可以实现,请问如何在帆软里实现?

FineReport guenze 发布于 2021-12-15 11:38
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
0
快乐星光Lv5中级互助
发布于2021-12-15 14:57(编辑于 2021-12-15 15:08)

用的 LTC朝 的demo,结合lt1873 和样朝建 的思路搞出来的,可以参考一下:

image.png

image.png

D\E\F列不用要,只是参考。在附件的sheet2里面。

hys_demo_test.rar

  • guenze guenze(提问者) 我先试试
    2021-12-15 16:06 
  • 快乐星光 快乐星光 回复 guenze(提问者) 参数需要改一下,在ds里面用 ${if(len(周一)=0 || len(周日)=0 ,\"\",\" and 日期>\"+ 周一+\" and 日期<\"+ 周日 )}
    2021-12-15 16:23 
  • guenze guenze(提问者) 回复 快乐星光 用您这个测试过,可以使用。但数据量大的话,执行起来要3分钟以上
    2021-12-16 10:15 
  • 快乐星光 快乐星光 回复 guenze(提问者) 这个公式确实耗时间,不行的话就用 墨残烛 的sql语句来实现,这个是最快的。
    2021-12-16 10:45 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-12-15 11:48
什么数据库呢?
最佳回答
0
墨残烛Lv5初级互助
发布于2021-12-15 13:25(编辑于 2021-12-15 14:57)

SELECT DISTINCT

a.[Code] as 卡号,

a.[日期],

b.[消费次数],

b.[连续天数]

FROM [dbo].[z_test] AS a 

LEFT JOIN(

SELECT

a.[卡号],

a.[消费次数],

COUNT ( a.daysFlag ) AS 连续天数

FROM

(

SELECT

a.[日期],

a.[Code] AS 卡号,

count(a.[日期]) AS 消费次数,

(

DAY ( a.[日期] ) - row_number () OVER ( partition BY a.[Code] ORDER BY a.[日期] )) AS daysFlag 

FROM

[dbo].[z_test] AS a 

GROUP BY

a.[日期],

a.[Code]

) AS a 

GROUP BY

a.[卡号],

a.[消费次数]

) AS b on a.Code=b.[卡号]

WHERE

b.[消费次数]>2

AND b.[连续天数]>=3

  • guenze guenze(提问者) 放最右边,左边卡号没要求,只显示符合标准的或者全部卡号分别显示符合,不符合都可以
    2021-12-15 13:38 
  • 墨残烛 墨残烛 回复 guenze(提问者) 用这方法就可以找出连续三天及以上且每天消费大于等于3次的全部卡号,如果只是想要单独作为一列,可以将这个作为第二个数据集,然后通过卡号与第一个数据集进行关联
    2021-12-15 15:00 
  • guenze guenze(提问者) 回复 墨残烛 终于看懂了您的代码!已经试过了可以用。
    2021-12-16 17:17 
最佳回答
0
杨朝健Lv5中级互助
发布于2021-12-15 14:00

G2单元格

=if(len(greparray(F2,len(eval("greparray(F2,item+0>2 && index<="+index+" && index>="+(index-2)+")"))=3))>0,"连续三天都来消费且每天消费大于两笔","")

item+0>2:每天消费大于两笔

index<="+index+" && index>="+(index-2):近3天

len(..)=3:连续三天每天消费大于两笔

公式含义:循环取近3天的数据判断消费大于两笔

最佳回答
0
LTC朝Lv6高级互助
发布于2021-12-15 14:03

demo.zip

这是我做的demo,下载下来看下

效果图如下:

image.png

最佳回答
0
lt1873Lv5见习互助
发布于2021-12-15 14:12

先判断每天消费笔数大于两笔的考号标记Y,否则N,后面增加一列选择不扩展,格式处理下,然后通过匹配YYY,就能判断出来

  • 杨朝健 杨朝健 这个逻辑好,G2的公式可以简单一点 =if(find(\"YYY\",joinarray(maparray(F2,if(item+0>2,\"Y\",\"N\")),\"\"))>0,\"连续三天都来消费且每天消费大于两笔\",\"\")
    2021-12-15 14:22 
  • 6关注人数
  • 795浏览人数
  • 最后回答于:2021-12-15 15:08
    请选择关闭问题的原因
    确定 取消
    返回顶部