我有一個名爲user_logins的表,它跟蹤用戶登錄到系統中。它有三列,LOGIN_ID,USER_ID和login_timeMySQL查詢幫助分組和添加
login_id(INT) | user_id(INT) | login_time(TIMESTAMP)
------------------------------------------------------
1 | 4 | 2010-8-14 08:54:36
1 | 9 | 2010-8-16 08:56:36
1 | 9 | 2010-8-16 08:59:19
1 | 3 | 2010-8-16 09:00:24
1 | 1 | 2010-8-16 09:01:24
我期待編寫一個查詢,將決定每一天唯一登錄的次數,如果那天有一個登錄,只從過去的30天當前日期。因此,對於輸出應該是這樣的
logins(INT) | login_date(DATE)
---------------------------
1 | 2010-8-14
3 | 2010-8-16
在結果表,因爲USER_ID 9在每天兩次記錄,並他登錄到系統2010-8-16只有3只算作1所登錄的那一天。我只爲特定的一天尋找唯一的登錄信息。請記住,我只想過去30天,因此它就像系統最近一個月用戶登錄的快照。
我試圖創建收效甚微我有什麼到目前爲止,這是查詢,
SELECT
DATE(login_time) as login_date,
COUNT(login_time) as logins
FROM
user_logins
WHERE
login_time > (SELECT DATE(SUBDATE(NOW())-1)) FROM DUAL)
AND
login_time < LAST_DAY(NOW())
GROUP BY FLOOR(login_time/86400)
我知道這是錯誤的,這將返回所有登錄僅從當前月初開始並沒有按對他們正確分組。有關如何做到這一點的方向將不勝感激。謝謝
你的WHERE子句似乎是從你的問題問什麼不同的哪一個是正確的 - 在WHERE子句。查詢或問題? – 2010-08-18 11:01:35
的問題,我知道查詢是錯誤 – IamBanksy 2010-08-18 11:03:28
我需要更改查詢來做我在描述的問題 – IamBanksy 2010-08-18 11:03:47