ajout compter les utilisateurs actifs et nouveaux par jour
This commit is contained in:
55
src/main.cpp
55
src/main.cpp
@@ -1,33 +1,60 @@
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <chrono>
|
||||
|
||||
#include "sqlite3pp.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
|
||||
auto begin = std::chrono::steady_clock::now();
|
||||
|
||||
sqlite3pp::database db("../uwu2x.db");
|
||||
sqlite3pp::query q(db, "SELECT DISTINCT identifier, strftime('%Y-%m-%d', date) FROM interaction ORDER BY date ASC;");
|
||||
|
||||
sqlite3pp::query qry(db, "SELECT identifier FROM interaction;");
|
||||
std::vector<std::vector<std::string>> interactions;
|
||||
|
||||
set<string> identifiers;
|
||||
|
||||
for (auto v : qry) {
|
||||
string identifier;
|
||||
v.getter() >> identifier;
|
||||
identifiers.insert(identifier);
|
||||
for (auto r : q)
|
||||
{
|
||||
std::string identifier, date;
|
||||
r.getter() >> identifier >> date;
|
||||
interactions.emplace_back(std::vector<std::string>{identifier, date});
|
||||
}
|
||||
|
||||
cout << identifiers.size() << " users" << endl;
|
||||
std::cout << interactions.size() << std::endl;
|
||||
|
||||
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
|
||||
|
||||
cout << chrono::duration_cast<std::chrono::milliseconds>(end - begin).count() << "ms elasped" << endl;
|
||||
std::set<std::string> identifiers;
|
||||
std::map<std::string, std::map<std::string, int>> activity;
|
||||
|
||||
for (size_t i = 0; i < interactions.size(); ++i)
|
||||
{
|
||||
const std::string &identifier = interactions[i][0];
|
||||
const std::string &date = interactions[i][1];
|
||||
|
||||
if (activity.find(date) == activity.end())
|
||||
{
|
||||
activity[date]["u"] = 0;
|
||||
activity[date]["n"] = 0;
|
||||
}
|
||||
|
||||
activity[date]["u"] += 1;
|
||||
if (identifiers.find(identifier) == identifiers.end())
|
||||
{
|
||||
activity[date]["n"] += 1;
|
||||
identifiers.insert(identifier);
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto &[key, val] : activity)
|
||||
{
|
||||
std::cout << key << " : u=" << val.at("u") << " n=" << val.at("n") << std::endl;
|
||||
}
|
||||
|
||||
auto end = std::chrono::steady_clock::now();
|
||||
|
||||
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - begin).count() << "ms elapsed" << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user