Подсчет логинов на устройство на пользователя

0

Я работаю над запросом (и не имею большого опыта), который почти делает то, что я хочу.

У меня есть таблица, которая содержит логины для каждого пользователя на устройство (таблица 1) и таблицу с набором пользователей, для которых я хочу получить результаты (таблица 2). Я хочу подсчитать, сколько раз пользователь x из таблицы 2 вошел в систему на устройстве в таблице 1.

Table 1 (data):
username
device_id
logon_date

Table 2 (users): 
username

Мой запрос выглядит так:

SELECT data.device_id
     , COUNT(data.username)
     , data.username 
  FROM data
     , users 
 WHERE data.username = users.username 
 GROUP 
    BY data.device_id

Но это только перечисляет каждое устройство один раз. Я знаю, что некоторые пользователи вошли в систему на одном устройстве. Поэтому я ожидал, что устройство будет упомянуто более одного раза.

device user login count
PC1 - user1 - 12
PC2 - user2 - 20
etc

Если бы я выписал свой запрос, он бы выглядел так: для каждого пользователя в таблице 2 подсчитывать каждый логин в таблице 1 и подсчитывать логины на устройство.

Поэтому он должен выглядеть так:

device user login count
PC1 - user1 - 12
PC1 - user2 - 60
PC2 - user1 - 5
PC2 - user2 - 20
PC2 - user3 - 14
etc

Что я делаю неправильно?

  • 0
    Пожалуйста, опубликуйте структуру таблицы и пример данных
  • 0
    Можем ли мы посмотреть, как выглядит ваша таблица, и дать нам пример результата, который вы хотели бы получить, пожалуйста?
Показать ещё 4 комментария
Теги:
database

1 ответ

0

"Я ожидал, что устройство будет упомянуто более одного раза".

Группа "group by" в поле device_id специально делает это так, чтобы строки для каждого устройства были сгруппированы в одну строку, а затем вы подсчитываете, сколько раз это устройство появляется в необработанных данных.

Я думаю, возможно, вы хотите сгруппировать как device_id, так и имя пользователя, например:

SELECT data.device_id
     , data.username 
     , COUNT(data.username)
  FROM data
     , users 
 WHERE data.username = users.username 
 GROUP 
    BY data.device_id, data.username

Ещё вопросы

Сообщество Overcoder
Наверх
Меню