sql - 运行累积 SUM
问题描述
我有一个大型(ish)成员数据库,我正在尝试对未来的成员资格进行一些预测。因此,我试图获取每个月输入系统的成员总数。
我有以下代码
select YEAR(datejoined) as YDJ,
MONTH(datejoined) as MDJ,
COUNT(MONTH(datejoined)) as CDJ,
SUM(Count(Month(DateJoined))) as SCDJ
From Member
Group by YEAR(datejoined), MONTH(datejoined)
Order by YEAR(DateJoined) asc, MONTH(datejoined) asc;
但是它抛出如下错误:
消息 130,级别 15,状态 1,第 4 行无法对包含聚合或子查询的表达式执行聚合函数。
我希望 SUM 函数做的是计算数据库中从开始到该点的总成员数(包括该月的新成员)。
解决方案
导致的错误SUM(Count(Month(DateJoined))) as SCDJ
聚合函数不能在一次选择中包含聚合函数。
您需要编写一个子查询来解决它
如果要累积 SUM,可以使用窗口函数SUM
SELECT t.*,SUM(CDJ) OVER (ORDER BY YDJ ,MDJ) as SCDJ
FROM (
select
YEAR(datejoined) as YDJ,
MONTH(datejoined) as MDJ,
COUNT(datejoined) as CDJ
From Member
Group by YEAR(datejoined), MONTH(datejoined)
) t
Order by YDJ asc,
MDJ asc
推荐阅读
- java - 通过 Dao、Repository 和 Viewmodel 从 Room 数据库接收对象列表的问题。找不到错误
- javascript - 即使使用 Access-Control-Expose-Headers 也无法获取响应标头获取请求
- webpack - webpack DefinePlugin 的功能到底是什么?
- android - Kotlin 将 DateTime 转换为 10 位时间戳
- emu8086 - 有人可以向我解释一下这个emu8086代码吗?
- c# - 覆盖默认的 ComboBoxItem 颜色
- javascript - 如何在单个路由中处理多个响应?
- android-studio - 我无法通过设计Tap移动约束布局中的任何元素,我无法移动项目并拖动它,这是什么问题?
- phpstorm - PhpStorm 2020.3 中的 PHP 可执行文件设置在哪里?
- git - GitHub Desktop 提交显示为另一个用户,尽管在同一个帐户上