每月计数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每月计数相关的知识,希望对你有一定的参考价值。
我似乎无法理解如何处理这个选择语句。
我有一个名为unified_assets的表,其中包含firstseen和lastseen等日期列。
我需要查询的是:每月所有资产。
显然从firstseen算起,但也排除了那个月给出的持续时间超过3个月的行。
因为这是相当直接的,所以我可以计算所有的第一个。
MSSQL 16
SELECT YEAR(firstseen) Year, MONTH(firstseen) Month, COUNT(*) Count
FROM unified_assets
GROUP BY YEAR(firstseen), MONTH(firstseen)
ORDER BY YEAR(firstseen), MONTH(firstseen);
基本上我现在需要做的是添加一个列添加所有之前的“firstseen”并减去所有超过3个月的“lastseen”。
任何指针都将非常感激。
答案
一种方法是生成月份,然后使用相关子查询或apply
进行计算。
以下计算该月第一天的活动数量。它首先生成2018年的所有月份 - 或者您感兴趣的任何范围:
with months as (
select convert(date, '2018-01-01') as yyyymm
union all
select dateadd(month, 1, yyyymm)
from months
where yyyymm < '2018-01-12'
)
select m.yyyymm,
(select count(*)
from unified_assets ua
where ua.firstseen <= m.yyyymm and
ua.lastseen >= m.yyyymm
) as cnt
from months m
order by m.yyyymm;
以上是关于每月计数的主要内容,如果未能解决你的问题,请参考以下文章