2010-08-13 75 views
0
 
id login_name login_time 
1 aa  2002-09-19 
2 bb  2002-12-19 
3 bb  2002-12-30 

如何編寫一條SQL語句來找出擁有最大登錄次數的用戶的最新login_time。例如,在此示例數據中,用戶「bb」已登錄兩次,他的最近login_time爲「2002-12-30」。如何寫這個sql語句?

+0

「最大登錄次數」是什麼意思? – BoltClock 2010-08-13 16:23:03

+2

SQL變體是什麼?對於mysql,t-sql等,答案會有所不同 – 2010-08-13 16:23:17

+0

最大登錄數可能是多少? – 2010-08-13 16:23:43

回答

-1
select * 
from [login table] 
where login_name [has max] on login_time [is soonest] 
+1

這不是一個有效的SQL語句,這只是僞代碼 – 2010-08-13 16:26:20

2
 

SELECT 

id, 
MAX(`login_time`) AS `login_time` 

FROM table_name 

GROUP BY login_name 

這是你想要什麼?你能解釋一下多一點,如果不..

+0

這個答案是錯誤的。我測試過了,對不起。 – SunLiWei 2010-08-13 17:03:51

0
SELECT login_name, COUNT(*) as num_logins, max(login_time) as last_login_time 
FROM table_name ORDER BY num_logins DESC 

然後,取決於你所使用的SQL Server上,你可以添加limit 1(在MySQL的情況下),或top 1爲MS SQL Server或別的東西了不同的服務器只能獲得第一條記錄。

+0

這個答案是錯的,對不起。 – SunLiWei 2010-08-13 17:09:19

+2

也許你應該擴展它的錯誤,讓海報和其他人可以更好地瞭解你想要得到的東西。 – 2010-08-13 17:20:18

+1

@ alex07 - 我想你想在那裏有一個「GROUP BY login_name」。 – 2010-08-13 17:21:05

0

Oracle數據庫上的以下作品:

SELECT MAX(LOGIN_TIME) 
    FROM LOGIN_TABLE 
    WHERE LOGIN_NAME = (SELECT LOGIN_NAME 
         FROM (SELECT LOGIN_NAME, COUNT(*) AS LOGIN_COUNT 
           FROM LOGIN_TABLE 
           GROUP BY LOGIN_NAME 
           ORDER BY LOGIN_COUNT DESC) 
         WHERE ROWNUM = 1) 

分享和享受。

2

這裏是最簡單的方法:

SELECT 
    t.login_name 
    ,COUNT(t.id) AS login_counts 
    ,MAX(t.login_time) AS latest_login_time 
FROM this_table AS t 
GROUP BY t.login_name 
ORDER BY login_counts DESC, login_name 
; 

頂行給你login_name最登錄。

而這裏的硬的方式:

SELECT 
    t.login_name 
    ,MAX(t.login_time) AS latest_login_time 
FROM this_table AS t 
INNER JOIN (
    -- Determine who has the most logins 
    SELECT TOP 1 x.login_name, COUNT(x.id) AS login_count 
    FROM this_table AS x 
    GROUP BY x.login_name 
    ORDER BY login_count DESC -- to get the highest counts first 
) AS m 
    ON t.login_name = m.login_name 
GROUP BY t.login_name 
; 

,讓你一個名字和日期,這就是它,雖然它並沒有考慮到的可能性,有可能超過1名具有最大登錄次數。我會留給你弄清楚。