SQL聚合函数 - 计算不同的重复数据

时间:2018-05-20 16:57:42

标签: sql-server tsql

我在SQL Server中有以下表格:

enter image description here

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

我想获得一个查询结果,该结果计算唯一session_id的数量和uniq user_ids的数量,按帐户分组,将日期保留为列,因为我想将此发送给Power BI并让用户指定begin和结束日期。

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

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不是唯一的,因为如果用户在多个日期连接,它将被计数几次。每个日期只计算唯一值。

如何保留上述查询的结构,但计算唯一用户和会话?

1 个答案:

答案 0 :(得分:1)

您可以使用子查询:

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