2010-06-23 61 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

使用不同的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

嘗試:

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 2010-06-23 22:47:21

0

你可以做這樣的事情

SELECT COUNT(DISTINCT user_id) FROM table WHERE lastLogin BETWEEN ....