sql - 确定特定客户在特定月份第一次访问商店
问题描述
我需要确定第一次访问商店的客户 [别名为 Patient_ID] 的每月(和每年)的计数细分。商店访问的日期时间存储在表格的[MDT Review Date]列中。
客户可以全年多次光顾商店并增加总数-> 但我需要的只是客户第一次光顾。
例如,Tom Bombadil 在 2019 年 1 月访问了该商店一次,因此计数增加到 1,然后在 3 月再次增加 4 次,因此计数应该是 3 月份的 1,2 月份的 0 和 1 月份的 1,然后在 10 月份再次增加 4 次,然后在 12 月再次 2 次。
我要求 Tom Bombadil在特定月份只计算一次,他的第一次出现是每月输出应该是这样的:
rn1 YEAR Month_Number Month Total_Count
1 2010 6 June 2
1 2010 7 July 1
1 2010 8 August 5
1 2010 10 October 5
1 2010 11 November 3
1 2011 1 January 4
1 2011 2 February 6
1 2011 4 April 7
1 2011 5 May 4
1 2011 6 June 10
1 2011 7 July 10
1 2011 8 August 14
1 2011 9 September 4
1 2011 10 October 8
1 2011 11 November 11
1 2011 12 December 11
1 2012 1 January 8
1 2012 2 February 21
请参考我的查询。我尝试使用窗口功能COUNT
来计算每月的商店访问次数。然后该ROW_NUMBER
函数尝试为每次访问分配一个唯一编号。我究竟做错了什么?
select
*
from
(select distinct
row_number() over (partition by p.Patient_ID, p.PAT_Forename1, p.PAT_Surname
order by PAT_Forename1, p.Patient_ID, PAT_Surname) AS rn1,
datepart(year, [DATE_COLUMN]) as YEAR,
datepart(month, [DATE_COLUMN]) as Month_Number,
datename(month,[DATE_COLUMN]) as Month,
count(p.Patient_ID) over (partition by datepart(year,[DATE_COLUMN]),
datename(month, [DATE_COLUMN])) as Total_Count
from
Tablename m
inner join
TableName p on m.PK_ID = p.PK_ID
) as temp
where
rn1 = 1
解决方案
推荐阅读
- ruby-on-rails - 带有文件上传的 rspec API 数据
- javascript - Splide.js 滑块上的多个进度条
- office-js - 如何在office js中隐藏评论?
- django - 使用 ldap3 进行 django 身份验证
- laravel - foreach 循环的数据返回空但表 laravel 8 中有数据
- java - 在应用更新中播放核心,在生产版本中提供 UPDATE_NOT_AVAILABLE
- html - 防止绝对 div(随 ScrollTrigger 移动)拉长页面
- roblox - 如何将步行速度更改为喜欢变量
- apache-spark - 如何将我的结构化流数据帧发送到 kafka?
- django - 未找到“uutiset”的反向。'uutiset' 不是有效的视图函数或模式名称