Active user ကို သိချင်သည့် အခါမှာ user app ကို login ဝင်တိုင်း log မှတ်ပါတယ်။
id | user_id | created_at |
---|---|---|
1 | 1 | 2019-04-12 |
2 | 1 | 2019-04-13 |
3 | 2 | 2019-04-12 |
4 | 2 | 2019-04-13 |
5 | 3 | 2019-04-13 |
6 | 4 | 2019-04-13 |
7 | 4 | 2019-04-13 |
8 | 1 | 2019-04-13 |
9 | 3 | 2019-04-13 |
MySQL အရ အောက်ပါ အတိုင်း ရေးပါတယ်။
SELECT COUNT(DISTINCT user_id),created_date From login_user where created_date >= "2019-04-12" and created_date <= "2019-04-13" Group By created_date
user_id ကို DISTINCT ခံပြီး COUNT ပြန်တွက်ပါတယ်။ group ကို created_date နဲ့ ဖွဲ့ပါတယ်။ DISTINCT ထည့်ရခြင်းကတော့ တစ်နေ့မှာ user တစ်ယောက်ဟာ တစ်ကြိမ်ထက် မနည်း ဝင်နိုင်တယ်။ ဒါကြောင့် DISTINCT ထည့်ပြီးမှ GROUP BY အတွက် COUNT လုပ်တာပါ။
Mongodb မှာတော့ aggregate နဲ့ တွဲရေးပါတယ်။
db.getCollection("logger").aggregate([
{
"$match": {
"created_at": {$lte: new Date("2019-04-10") , $gte: new Date("2019-04-09") }
}
},
{
$group : {
_id : {"user_no":"$user_no","created_at":"$created_at"},
"created_at" : {"$first" : "$created_at"}
}
},
{
$group : {
_id : "$created_at",
count: {$sum: 1}
}
}
])
ပထမဆုံး where case ကို စစ်တယ်။ ပြီးတော့ group by နဲ့ user_no , created_at ကို group ဖွဲ့လိုက်တယ်။ user_no နဲ့ created_at ကို group ဖွဲ့ မှသာ အဲဒီနေ့မှ ဝင်မယ့် user အရေအတွက် အတိအကျ ရနိုင်ပါလိမ့်မယ်။ created_at value ကို တော့ ယူထားဖို့ လိုပါတယ်။ ဒါမှသာ ထပ်ပြီး created_at နဲ့ group ပြန်ဖွဲ့လို့ရပါလိမ့်မယ်။
Leave a Reply