Функции агрегирования SQL - считайте разные, избегая дубликатов - PullRequest
0 голосов
/ 20 мая 2018

У меня есть следующая таблица в SQL Server:

enter image description here

Учетная запись - это текстовые значения с разными именами Учетной записи.У меня может быть один и тот же идентификатор пользователя для разных учетных записей и дат.

Я хотел бы получить результат запроса, который подсчитывает количество уникальных идентификаторов сеанса и число уникальных идентификаторов пользователя, сгруппированных по учетной записи, сохраняя дату в виде столбца, поскольку я хотел бы отправить это в 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

Идентификатор пользователя не является goint, чтобы быть уникальным, потому что, если пользователь подключается в несколько дат, онбудет посчитан несколько раз.Уникальные значения просто рассчитываются на дату.

Как сохранить структуру вышеупомянутого запроса, но считая уникальных пользователей и сеансы?

1 Ответ

0 голосов
/ 20 мая 2018

Вы можете использовать подзапрос:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...