Sql server SQL聚合函数-计数不同的函数以避免重复
我在SQL Server中有下表: 帐户是具有不同帐户名称的文本值。我可以在不同的帐户和日期上使用相同的用户id 我想得到一个查询结果,计算唯一会话ID的数量和uniq用户ID的数量,按帐户分组,将日期作为一列,因为我想将其发送给Power BI,并让用户指定开始和结束日期 但是,如果我使用此查询:Sql server SQL聚合函数-计数不同的函数以避免重复,sql-server,tsql,Sql Server,Tsql,我在SQL Server中有下表: 帐户是具有不同帐户名称的文本值。我可以在不同的帐户和日期上使用相同的用户id 我想得到一个查询结果,计算唯一会话ID的数量和uniq用户ID的数量,按帐户分组,将日期作为一列,因为我想将其发送给Power BI,并让用户指定开始和结束日期 但是,如果我使用此查询: SELECT Date, Account, COUNT(DISTINCT(session_id)) number_session, COUNT(DISTINCT(user_id)) number_u
SELECT Date,
Account,
COUNT(DISTINCT(session_id)) number_session,
COUNT(DISTINCT(user_id)) number_users
FROM Table
GROUP BY Date, Account
ORDER BY Date
用户id不会是唯一的,因为如果一个用户连接多个日期,它将被计数多次。唯一值仅按日期计算
如何保持上述查询的结构,但计算唯一用户和会话数?您可以使用子查询:
SELECT Date,
Account,
COUNT(DISTINCT(session_id)) number_session,
MAX(SELECT COUNT(DISTINCT user_id)
FROM table t2 WHERE t1.Account=t2.Account) AS number_users
FROM Table t1
GROUP BY Date, Account
ORDER BY Date
谢谢,这并不完全是我需要的,但它给了我探索子查询的想法!