我在SQL Server中有以下表格:
帐户是具有不同帐户名称的文本值。我可以在不同的帐户和日期拥有相同的用户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不是唯一的,因为如果用户在多个日期连接,它将被计数几次。每个日期只计算唯一值。
如何保留上述查询的结构,但计算唯一用户和会话?
答案 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