Sql server SQL聚合函数-计数不同的函数以避免重复

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

我在SQL Server中有下表:

帐户是具有不同帐户名称的文本值。我可以在不同的帐户和日期上使用相同的用户id

我想得到一个查询结果,计算唯一会话ID的数量和uniq用户ID的数量,按帐户分组,将日期作为一列,因为我想将其发送给Power BI,并让用户指定开始和结束日期

但是,如果我使用此查询:

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

谢谢,这并不完全是我需要的,但它给了我探索子查询的想法!