SQL多年来的增长
我有一个带有成员id的表,按时间连接方式连接,我正在试图找出如何找到年与年之间的增长百分比。 我有 选择YEARjoined作为JoinedYear,COUNTmember\u id作为Members 来自grp_成员 按年份分组加入 联合年度asc的订单;SQL多年来的增长,sql,Sql,我有一个带有成员id的表,按时间连接方式连接,我正在试图找出如何找到年与年之间的增长百分比。 我有 选择YEARjoined作为JoinedYear,COUNTmember\u id作为Members 来自grp_成员 按年份分组加入 联合年度asc的订单; 这显示了每年加入的人数,但需要使用子查询帮助查找增长情况。快速web搜索将此示例显示为您的基础查询作为CTE,并在其上自行加入以获取上一年的值: 随着成长 像 选择YEARjoined作为JoinedYear,COUNTmember\u i
这显示了每年加入的人数,但需要使用子查询帮助查找增长情况。快速web搜索将此示例显示为您的基础查询作为CTE,并在其上自行加入以获取上一年的值: 随着成长 像 选择YEARjoined作为JoinedYear,COUNTmember\u id作为Members 来自grp_成员 按年份分组加入 联合年度asc订单 选择curYear.JoinedYear作为[Year],curYear.[Members] 从去年开始 curYear.JoinedYear=prevYear.JoinedYear+1上的上一年左连接增长 按curYear.joineddyear排序 在这里尝试一下: 年 成员 同比增长 2019 3. 0 2020 6. 3. 2021 9 3.
只需使用窗口功能:
SELECT YEAR(joined) AS JoinedYear,
COUNT(*) AS Members,
(-1 + COUNT(*) * 1.0 / LAG(COUNT(*)) OVER (ORDER BY YEAR(joined))) as growth_rate
FROM grp_member
GROUP BY YEAR(joined)
ORDER BY JoinedYear asc;
你需要跟着小组走 操作人员GROUP_CONCAT版本在结果集中接收最后1个月的数据,因此,如果将表达式设为子查询,则可以对其求和,然后使用join获得最高外部组中的第一个值。您确实应该指定预期的输出格式,并包含一些示例数据。如果您只是在标题上进行web搜索,则有许多此类查询的示例。请标记RDBMSUse百分比更改规则以确定增长。您可以创建自己的函数。前一年的差距为1