すべてのユーザーがクリックして保存する action_info テーブルがあります。前の週の非アクティブなユーザーの数を取得する必要があります。ACTIVE ユーザーのクエリは次のとおりです。
SELECT COUNT( DISTINCT user_id ) as active_for_week FROM action_info
WHERE action_name = 'attack'
AND time >= (CURDATE( ) - INTERVAL 7 DAY)
すべてのユーザーがクリックして保存する action_info テーブルがあります。前の週の非アクティブなユーザーの数を取得する必要があります。ACTIVE ユーザーのクエリは次のとおりです。
SELECT COUNT( DISTINCT user_id ) as active_for_week FROM action_info
WHERE action_name = 'attack'
AND time >= (CURDATE( ) - INTERVAL 7 DAY)
これにより、先週アクティブだったすべてのユーザーが users テーブルから除外されるため、非アクティブなユーザーのみが表示されます。これがあなたが探しているものであることを願っています。
SELECT COUNT(*) FROM users WHERE ID NOT IN(
SELECT DISTINCT user_id FROM action_info
WHERE action_name = 'attack'
AND time >= (CURDATE( ) - INTERVAL 7 DAY)
)
アップデート:
users テーブルをクエリせずに、これを行うことができます:
SELECT COUNT(DISTINCT user_id) AS not_active_last_week FROM action_info
WHERE action_name = 'attack' AND user_id NOT IN (
SELECT DISTINCT user_id FROM action_info
WHERE action_name = 'attack'
AND time >= (CURDATE( ) - INTERVAL 7 DAY)
)
これにより、ある時点でアクティブだったが、先週はアクティブでなかったすべてのユーザーの数がわかります。これがSQLフィドルです