Sql server 2008 如何计算登录的唯一用户数?
是否有人可以帮助我使用SQL Server查询来计算以下指标: 注册用户总数。如果用户已登录,则视为已注册 活动用户活动用户定义为在过去30天内1+次登录 按设备类型列出的活动用户 iPhone应用程序=?? Android应用程序=?? 我的桌子看起来像这样: 非常感谢,我使用下面的SQL生成了我在示例中输入的数据集Sql server 2008 如何计算登录的唯一用户数?,sql-server-2008,Sql Server 2008,是否有人可以帮助我使用SQL Server查询来计算以下指标: 注册用户总数。如果用户已登录,则视为已注册 活动用户活动用户定义为在过去30天内1+次登录 按设备类型列出的活动用户 iPhone应用程序=?? Android应用程序=?? 我的桌子看起来像这样: 非常感谢,我使用下面的SQL生成了我在示例中输入的数据集 SELECT SUB1.First_NM, SUB1.Last_NM, SUB1.Customer_ID, SUB1.Conversion_date, S
SELECT
SUB1.First_NM,
SUB1.Last_NM,
SUB1.Customer_ID,
SUB1.Conversion_date,
SUB1.APP_TYPE,
SUB1.Device_Typ,
CONVERT (VARCHAR (7),MAX(SUB1.Most_Recent_App_Login),120) as LATEST_App_Login
FROM
(
SELECT
CASE
WHEN A.USER_AGNT_STR LIKE '%ANDROID%'
then 'Android'
WHEN A.USER_AGNT_STR LIKE '%iPad%'
then 'iPad'
WHEN A.USER_AGNT_STR LIKE '%iPhone%'
THEN 'iPhone' ELSE NULL END AS APP_TYPE,
B.Customer_ID,
A.DEVICE_TYP,
B.First_nm,
B.Last_NM,
CONVERT(VARCHAR (7),MAX(B.File_CREATE_DT),120) as Conversion_Date,
CONVERT (VARCHAR (7),MAX(A.LOGIN_DTTM),120) as Most_Recent_App_Login
FROM [Tabl1]] A
JOIN [Tabl2] B
on A.USER_ID = B.FILE_USER_ID
AND A.PROD_DT = B.PROD_DT
WHERE A.USER_AGNT_STR like '%FRB Banking/%'
AND B.PROD_DT >= dateadd(day, -360, getdate())
GROUP BY A.USER_AGNT_STR,A.DEVICE_TYP,B.Customer_ID, B.FIRST_NM, B.Last_NM
HAVING
A.USER_AGNT_STR like '%iPhone%'
or A.USER_AGNT_STR like '%iPad%'
or A.USER_AGNT_STR like '%Android%'
OR A.DEVICE_TYP like '%Phone%'
OR A.DEVICE_TYP LIKE '%Tablet%'
OR A.DEVICE_TYP LIKE '%Android%'
AND B.Customer_ID <> ' '
AND B.FIRST_NM != 'Placeholder'
) SUB1
GROUP BY Customer_ID, APP_TYPE, First_NM, Last_NM, Conversion_Date, Device_Typ
order by Customer_ID
这将是一个开始。如果需要一个记录集,可以使用UNION,例如,将RegisteredUsers更改为[PropertyName]列,其值在[PropertValue]列中
select Count(distinct UserId) as [RegisteredUsers]
from TABLE
select Count(distinct UserId) as [ActiveUsers]
from TABLE
where LastLogin >= DATEADD(day, -30, GETDATE())
group by DeviceType
select DeviceType, Count(distinct UserId)
from TABLE
where LastLogin >= DATEADD(day, -30, GETDATE())
group by DeviceType
select ApplType, Count(distinct UserId)
from TABLE
where LastLogin >= DATEADD(day, -30, GETDATE())
group by ApplType
StackOverflow不是代码编写服务。您需要付出一定的努力,包括您尝试过的代码或查询、遇到的错误、示例数据和预期结果。您好,谢谢,我知道这不是免费的代码编写服务。这是我第一次问关于堆栈溢出的问题。请看帮助部分。它有很多关于如何最大限度地利用网站的信息:非常感谢Randy,我添加了我创建的SQL,以从我的示例中获取数据集