每月计数与每日记录

时间:2019-05-14 12:16:41

标签: sql sql-server

我使用信用卡帐户。每天,每个帐户都会向我们的数据库添加一条记录。有关联的数据(与此无关),但是有一个列显示布尔值(1,0)(如果该帐户处于活动状态或现在),以及该记录的日期

数据看起来像这样

ACCOUNT     DATA1     DATA2     ISACTIVE      INSERT DATE
1234        XXX       XXXX       1             5/1/2019
1234        XXX       XXXX       1             5/2/2019
1234        XXX       XXXX       1             5/3/2019
1234        XXX       XXXX       1             5/4/2019
5678        XXX       XXXX       1             5/1/2019
5678        XXX       XXXX       1             5/2/2019
5678        XXX       XXXX       1             5/3/2019
5678        XXX       XXXX       1             5/4/2019

我希望计算出大约18个月以来每月活跃的帐户数量(基于每月1号)。我不确定如何为此编写代码。

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

您可以尝试按月份(INSERT DATE)进行分组:

SELECT month([INSERT DATE]) as month_num,count(distinct ACCOUNT) as ACCOUNT_num
from table
group by month([INSERT DATE])

答案 1 :(得分:0)

尝试一下:

SELECT YEAR([INSERT DATE]) AS [Year], MONTH([INSERT DATE]) AS [Month], COUNT(DISTINCT [Account]) AS [UniqueActiveAccounts]
FROM [YourTableName]
WHERE [ISACTIVE] = 1 AND [INSERT DATE] > DATEADD(MONTH,-19,GETDATE())
GROUP BY YEAR([INSERT DATE]), MONTH([INSERT DATE])

此查询从运行此查询起18个月后获取数据。您可以在查询的 DATEADD 部分中调整此时间段。

您当然需要在 FROM 之后插入表格名称。

答案 2 :(得分:0)

SELECT Count(DISTINCT account) 
FROM   t 
WHERE  isactive = 1 
GROUP  BY Month(insert_date), 
          Year(insert_date)