sql >> データベース >  >> RDS >> Mysql

MYSQLの最後のログインと過去3か月のログイン数

    まず、各問題を個別に解決します:

    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
    

    それらを個別にテストして、これらの各クエリが希望どおりに機能することを確認し、必要に応じて調整します。

    次に、両方が機能することに満足したら、結果を結合します。

    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
    

    これにより、MySQLはさまざまなクエリのインデックスを最大限に活用できるようになります。



    1. PostgreSQLエラー:関数to_tsvector(文字が変化します、不明)が存在しません

    2. デフォルトの方法で自動データベースのバックアップと復元を実装する

    3. プロキシスローを介したmySqlの使用原因:java.sql.SQLException:呼び出し可能なステートメントはサポートされていません。再接続後

    4. ストアドプロシージャ/関数のリストMysqlコマンドライン