次のデータを含むテーブルがあります。
UserName | LastLogin
-------------------------------
User1 | 2010-10-25 10:05:47
User2 | 2010-10-23 11:10:27
User3 | 2010-10-12 05:39:34
User4 | 2010-10-20 12:22:11
User5 | 2010-09-17 08:41:05
クエリを実行して、過去 3 日間、過去 7 日間、および過去 21 日間にログインした人の数を取得できるようにしたいと考えています (これらの数字が重複することはわかっています)。次のようなクエリを実行することで、特定の値を取得できることがわかっています (構文は 100% 正しくない可能性があります)。
SELECT COUNT(*)
FROM login
WHERE LastLogin >= DATEDIFF(NOW(), LastLogin, INTERVAL 3 DAY);
1 つのクエリで 3 つの値すべてを返すクエリを実行できますか? GROUP BY は機能しますか? または、ネストされたクエリを使用できますか? 異なる間隔を指定してクエリを 3 回実行しても、同じくらい効率的ですか?