2010-06-23 3 views
1

Нужна помощь с тем, что, вероятно, является довольно простым SQL-запросом. Я пытаюсь выбрать количество уникальных записей, которые соответствуют конкретному предложению where.SQL уникальный запрос - нужна помощь

По существу, я ищу, чтобы найти количество уникальных пользователей, которые вошли в систему между датой x и y. Если пользователь регистрировался более одного раза между этими датами, ему нужно было только один раз подсчитывать.

данные выглядит примерно так:

id | user_id | lastLogin 
1 | 100  | 2010-06-23 10:00:00 
2 | 101  | 2010-06-23 10:05:00 
3 | 100  | 2010-06-23 11:00:00 

Спасибо!

ответ

1

Вот еще один вариант

SELECT COUNT(user_id), user_id, MAX(lastLogin) 
FROM login_table 
WHERE lastlogin BETWEEN @start AND @end 
GROUP BY user_id 

Это поможет вам счет входа в систему, а последний логин дата также.

0

Используйте оператор Distinct SQL.

Пример

select distinct user_id from UsersLoggedIn where lastLogin >= '2010-06-23 10:00:00' and lastLogin <= '2010-06-23 11:00:00' 

Вы можете обернуть, что в счете, чтобы получить количество пользователей.

select count(*) from (select distinct user_id from UsersLoggedIn where lastLogin >= '2010-06-23 10:00:00' and lastLogin <= '2010-06-23 11:00:00') x 
1

Try:

select count(distinct user_id) 
from login_table 
where lastlogin between @startdatetime and @enddatetime 
+0

Обратите внимание, что для очень больших таблиц и Microsoft SQL Server быстрее выполнять динамический SQL с литералами, созданными с использованием переменных даты, поскольку SQL медленнее сравнивается с переменными. Другими словами: «WHERE lastLogin BETWEEN @ var1 AND @ var2» намного медленнее, чем «WHERE lastLogin BETWEEN» 2010-01-01 «AND» 2010-05-01 », даже если переменные установлены в одни и те же даты. – Zugwalt

0

Вы можете сделать что-то вроде

SELECT COUNT(DISTINCT user_id) FROM table WHERE lastLogin BETWEEN .... 
Смежные вопросы