Сегодня я задал аналогичный вопрос, но столкнулся с другой проблемой, с которой мне нужна помощь.
У меня есть система регистрации, которая сканирует сервер и каталогизирует всех пользователей, которые в данный момент находятся в сети. Вот как выглядит моя таблица:
-----------------
| ab_logs |
-----------------
| id |
| scan_id |
| found_user |
-----------------
id
- первичный ключ с автоинкрементом. Не имеет никакой реальной ценности, кроме этой.
scan_id
- целое число, которое увеличивается после каждого успешного сканирования всех пользователей. Это так, чтобы я мог разделить результаты разных сканирований.
found_user
. Сохраняет, какой пользователь был обнаружен в сети во время сканирования.
Приведенное выше сгенерирует таблицу, которая может выглядеть так:
id | scan_id | found_user
----------------------------
1 | 1 | Nick
2 | 2 | Nick
3 | 2 | John
4 | 3 | John
Таким образом, при первом сканировании система нашла в сети только Ника. 2-го он нашел и Ника, и Джона. 3-го числа только Джон был в сети.
Моя проблема в том, что я хочу получить общее количество уникальных пользователей , подключенных к серверу во время каждого сканирования . Другими словами, мне нужно общее количество пользователей, подключившихся при каждом сканировании. Думайте встречно.
Из приведенного выше примера результат, который я хочу получить от sql, будет следующим:
1
2
2
РЕДАКТИРОВАТЬ:
Это то, что я пробовал до сих пор, но это неправильно:
SELECT COUNT(DISTINCT(found_user)) FROM ab_logs WHERE DATE(timestamp) = CURDATE() GROUP BY scan_id
То, что я пробовал, возвращает это:
1
2
1
2 ответа
Приведенный ниже код должен дать вам результаты, которые вы ищете.
select s.scan_id, count(*) from
(select distinct
t.scan_id
,t1.found_user
from
tblScans t
inner join tblScans t1 on t.scan_id >= t1.scan_id) s
group by
s.scan_id;
Вот sqlFiddle
Предполагается, что имена уникальны и включает текущее и каждое предыдущее сканирование в счетчике.
Попробуйте с группой по предложению:
SELECT scan_id, count(*)
FROM mytable
GROUP BY scan_id
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными.