求非活跃卡(hive数据库)

A表

客户id,卡id,卡创建时间等

B表

客户id、卡id、交易时间等

一个客户可以有多张卡,时间都是精确到日的;非活跃卡的规则定义为一个月内无交易;

求客户每月的非活跃卡数量

赵超凡 发布于 2021-12-20 16:22 (编辑于 2021-12-20 16:38)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
墨残烛Lv5初级互助
发布于2021-12-20 16:32(编辑于 2021-12-20 16:45)

SELECT

b.[客户ID],

COUNT(b.[卡ID])

FROM A AS a

LEFT JOIN B AS b ON a.[客户ID]=b.[客户ID]

WHERE

    b.[交易时间]<=date_sub(trunc(CURRENT_DATE,'MM'),1)

GROUP BY

    b.[客户ID]

hive sql日期函数可以参考Hive SQL 常用日期 - 做个有梦想的咸鱼 - 博客园 (cnblogs.com)

  • 赵超凡 赵超凡(提问者) hive数据库
    2021-12-20 16:37 
  • 墨残烛 墨残烛 回复 赵超凡(提问者) 已修改,你试试看,实现逻辑就是筛选出交易时间小于等于上个月月底——也就是本月无交易的卡ID,对卡的客户进行分组,计算此时卡ID的数量也就是每个客户拥有的非活跃卡数量
    2021-12-20 16:46 
  • 赵超凡 赵超凡(提问者) 您能说一下where条件里的语句什么意思吗
    2021-12-20 16:47 
  • 赵超凡 赵超凡(提问者) 好的,谢谢
    2021-12-20 16:49 
  • 墨残烛 墨残烛 回复 赵超凡(提问者) 我上面已经改成了hive数据库的where代码,你那边试试看,如果不行就去参考一下hive日期函数链接
    2021-12-20 16:52 
  • 2关注人数
  • 338浏览人数
  • 最后回答于:2021-12-20 16:45
    请选择关闭问题的原因
    确定 取消
    返回顶部