sql >> Database teknologi >  >> RDS >> Mysql

MYSQL sidste login og antal login inden for de sidste 3 måneder

Løs først hvert problem separat:

SELECT A.UserID, MAX(TIME) AS LastLogin  
FROM UserMaster A  
LEFT JOIN UserWebActivity B
ON A.UserID = B.UserID  
AND Activity = 'Login'  
GROUP BY A.UserID

SELECT A.UserID, COUNT(Activity) AS Logins
FROM UserMaster A  
LEFT JOIN UserWebActivity B ON A.UserID = B.UserID  
AND Activity = 'Login'  
AND TIME BETWEEN (NOW() - INTERVAL 3 MONTH) AND NOW( )  
GROUP BY A.UserID

Test dem separat for at sikre, at hver af disse forespørgsler fungerer, som du ønsker, og juster dem om nødvendigt.

Så når du er glad for, at de begge virker, så sæt resultaterne sammen:

SELECT T1.UserID, T1.LastLogin, T2.Logins
FROM
(
    SELECT A.UserID, MAX(TIME) AS LastLogin  
    FROM UserMaster A  
    LEFT JOIN UserWebActivity B
    ON A.UserID = B.UserID  
    AND Activity = 'Login'  
    GROUP BY A.UserID
) AS T1
JOIN
(
    SELECT A.UserID, COUNT(Activity) AS Logins
    FROM UserMaster A  
    LEFT JOIN UserWebActivity B
    ON A.UserID = B.UserID  
    AND Activity = 'Login'
    AND TIME BETWEEN (NOW() - INTERVAL 3 MONTH) AND NOW()
    GROUP BY A.UserID
) AS T2
ON T1.UserID = T2.UserID

Dette vil gøre det muligt for MySQL at udnytte indekserne bedst muligt til de forskellige forespørgsler.



  1. MySql indlæse data i filen STR_TO_DATE returnerer tom?

  2. Hurtigste måde at afgøre, om posten eksisterer

  3. Forstå lagringsstørrelser for MySQL TEXT-datatyper

  4. Opret trigger for at logge SQL, der påvirkede tabel?