蘑菇帮 2018-04-25 07:39 采纳率: 38.5%
浏览 1163
已采纳

SQL 周期计算 消除重复日期

我有一张化妆品的消费清单,清单记录了顾客消费乳液,日霜,眼霜的时间,金额,品牌.
现在我需要计算乳液的消费周期,遇到了这样一个问题:
同一顾客可能在同一天会消费同一款乳液两次,在计算消费周期的时候如果我把这两次都计算进去就会影响我的最后周期的准确性,导致周期变小.
求问各位大神我应该怎么改我的代码?

这是我写的不成熟的代码:
select avg(t.消费周期) from(
SELECT 客户卡号,count(客户卡号) as count,datediff(dd,min(营业日期),max(营业日期))*1.0/(count(客户卡号)-1)as 消费周期
FROM hfbns
WHERE [产品] like '%乳液%'
GROUP BY 客户卡号
having count(客户卡号)>1

and
min(营业日期)<>max(营业日期)) t

[img=https://img-bbs.csdn.net/upload/201804/25/1524642000_984968.png][/img]

我先计算了每一个顾客在过去的两年里消费乳液的周期,然后再算所有顾客的平均值,来得到整体的消费周期。不知道这种方法是否合理。

  • 写回答

3条回答 默认 最新

  • qinxueyuan 2018-04-25 08:30
    关注

    合不合理要看你对消费周期怎么定义,这个应该不是技术实现讨论的范畴
    如果你觉得两次消费只计一次比较合理,那就用dinstinct只保留一条记录
    select avg(t.消费周期) from(
    SELECT 客户卡号,count(客户卡号) as count,datediff(dd,min(营业日期),max(营业日期))*1.0/(count(客户卡号)-1)as 消费周期
    FROM (select distinct 客户卡号,营业日期 from hfbns
    WHERE [产品] like '%乳液%' ) aa
    GROUP BY 客户卡号
    having count(客户卡号)>1

    ) t

    你的语句中 min(营业日期)<>max(营业日期) 也是一种方法,但结果有差异,比如第一天消费1次,第二天消费两次,你这个的消费周期是1/3,而用distinct 计算结果是1/2,哪个都可以说合理,理解不同

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序