首页 > 解决方案 > 获取自某个月以来未计费的用户数

问题描述

我很确定标题写得很糟糕,但我不知道如何措辞,也不知道我的问题。我们遇到了一个问题,似乎一些用户几个月都没有收到账单。不是全部,只是一些,我们正试图弄清楚有多少。例如,有一个当前活跃的用户大约 3 个月没有计费。还有一个人已经 5 个多月没有收到账单了。还有一些他们上个月没有收到账单,等等......

我一直在环顾四周,因为我很确定我的谷歌搜索不正确,所以我没有找到解决方案。在尝试了这么多之后,我不断回到的查询是:

SELECT COUNT(DISTINCT u.USER_ID) from SUBSCRIPTION AS s
JOIN USERS as U
ON s.USER_ID = u.USER_ID
WHERE s.BILLING_DATE <= DATEADD(month, -1, GETDATE()) AND u.STATUS = 'ACTIVE'

上面的查询,我相信得到的数字比我们应该得到的要大得多。

标签: sql

解决方案


这里有一些东西可以尝试。

子查询说明:

查找上个月左右已计费的用户。

外部查询表达式说明:

查找不在上述已计费用户列表中的活跃用户数。

SELECT COUNT(*)
  FROM users
 WHERE STATUS = 'ACTIVE'
   AND user_id NOT IN (
          SELECT user_id FROM subscription
           WHERE BILLING_DATE > DATEADD(month, -1, GETDATE())
       )
;

根据需要调整dateadd逻辑。


推荐阅读