sql >> Databáze >  >> RDS >> Mysql

Jak získat kumulativní celkový počet uživatelů za den v MySQL

Denní kumulativní celkový počet uživatelů je velmi užitečnou metrikou KPI pro analýzu růstu uživatelů pro každou firmu. Protože však v MySQL není žádná vestavěná funkce pro výpočet průběžného součtu, zde je dotaz SQL pro získání kumulativního celkového počtu uživatelů za den, známý také jako klouzavý součet podle data nebo průběžný celkový počet uživatelů.

Jak získat kumulativní celkový počet uživatelů za den v MySQL

Zde jsou kroky, jak získat kumulativní celkový počet uživatelů za den v MySQL. Řekněme, že máte následující tabulku users(date_joined,user_id) který obsahuje všechna uživatelská ID s datem registrace/registrace/připojení k vaší firmě.

mysql> create table users(date_joined date,user_id int);

mysql> insert into users(date_joined,user_id)
       values('2020-04-28',213),
       ('2020-04-28',214),
       ('2020-04-30',215),
       ('2020-04-28',216),
       ('2020-04-28',217),
       ('2020-04-30',218),
       ('2020-04-28',219),
       ('2020-04-28',220),
       ('2020-04-30',221),
       ('2020-05-01',222),
       ('2020-05-01',222),
       ('2020-05-01',223),
       ('2020-05-04',224),
       ('2020-05-04',225),
       ('2020-05-04',226),
       ('2020-05-04',226),
       ('2020-05-04',227),
       ('2020-05-04',228),
       ('2020-05-05',229),
       ('2020-05-05',230),
       ('2020-05-05',231),
       ('2020-05-05',232),
       ('2020-05-06',233),
       ('2020-05-06', 234);

mysql> select * from users;
+-------------+---------+
| date_joined | user_id |
+-------------+---------+
| 2020-04-28  |     213 |
| 2020-04-28  |     214 |
| 2020-04-30  |     215 |
| 2020-04-28  |     216 |
| 2020-04-28  |     217 |
| 2020-04-30  |     218 |
| 2020-04-28  |     219 |
| 2020-04-28  |     220 |
| 2020-04-30  |     221 |
| 2020-05-01  |     222 |
| 2020-05-01  |     222 |
| 2020-05-01  |     223 |
| 2020-05-04  |     224 |
| 2020-05-04  |     225 |
| 2020-05-04  |     226 |
| 2020-05-04  |     226 |
| 2020-05-04  |     227 |
| 2020-05-04  |     228 |
| 2020-05-05  |     229 |
| 2020-05-05  |     230 |
| 2020-05-05  |     231 |
| 2020-05-05  |     232 |
| 2020-05-06  |     233 |
| 2020-05-06  |     234 |
+-------------+---------+

Nejprve se podíváme na dotaz SQL, abychom vypočítali denní počet registrací

mysql> select date(date_joined),count(user_id) 
       from users 
       group by date(date_joined);
+-------------------+----------------+
| date(date_joined) | count(user_id) |
+-------------------+----------------+
| 2020-04-28        |        6       |
| 2020-04-30        |        3       |
| 2020-05-01        |        3       |
| 2020-05-04        |        6       |
| 2020-05-05        |        4       |
| 2020-05-06        |        2       |
+-------------------+----------------+

Dále je zde dotaz SQL pro získání kumulativního celkového počtu uživatelů za den v MySQL. Výše uvedený SQL použijeme jako poddotaz, abychom získali celkový průběh v SQL.

mysql> set @csum := 0;

mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select date(date_joined) as date_joined,count(user_id) as new_users
             from users
             group by date(date_joined)
            ) as temp
            order by date_joined;
+-------------+-----------+-------------+
| date_joined | new_users | total_users |
+-------------+-----------+-------------+
| 2020-04-28  |         6 |           6 |
| 2020-04-30  |         3 |           9 |
| 2020-05-01  |         3 |          12 |
| 2020-05-04  |         6 |          18 |
| 2020-05-05  |         4 |          22 |
| 2020-05-06  |         2 |          24 |
+-------------+-----------+-------------+

Ve výše uvedeném dotazu jsme nastavili dočasnou proměnnou csum na 0. Poté ji pro každý řádek použijeme k výpočtu a uložení kumulativního součtu uživatelů.

Poté, co získáte kumulativní celkový počet uživatelů za den v MySQL, můžete jej vykreslit do spojnicového grafu nebo řídicího panelu pomocí nástroje pro vytváření sestav, jako je Ubiq, a sdílet je se svým týmem. Zde je spojnicový graf vytvořený pomocí Ubiq.

Pokud chcete získat podmíněný průběžný součet v MySQL, můžete do poddotazu přidat klauzuli WHERE, podle vašich požadavků.

mysql> set @csum := 0;
mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select date(date_joined) as date_joined,count(user_id) as new_users
             from users 
             WHERE <condition>
             group by date(date_joined)
            ) as temp
            order by date_joined;

Výše uvedený SQL dotaz můžete snadno upravit a vypočítat kumulativní celkový počet uživatelů podle týdne, měsíce, čtvrtletí a roku. Pojďme se na ně podívat jeden po druhém. Použijeme funkci DATE_FORMAT ke snadnému získání týdne a měsíce ze sloupců s datem.

Bonusové čtení:Jak vypočítat výnosy v MySQL

Jak získat kumulativní celkový počet uživatelů za týden v MySQL

Zde je dotaz SQL pro získání kumulativního celkového počtu uživatelů podle týdne v MySQL. V dotazu SQL, abyste získali kumulativní celkový počet uživatelů za den, stačí změnit funkci agregace v dílčím dotazu od date(date_joined) na date_format(date_format,‘%U‘) .

mysql> set @csum := 0;
mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select date_format(date_joined,'%U') as date_joined,
               count(user_id) as new_users
             from users
             group by date_format(date_joined,'%U')
            ) as temp
            order by date_joined;

Ve výše uvedeném dotazu můžete také použít funkci WEEK místo DATE_FORMAT, to znamená použít WEEK(date_joined) místo DATE_FORMAT(date_joined,‘%U‘)

Bonusové čtení:Jak získat záznamy aktuálního měsíce v MySQL

Jak získat kumulativní celkový počet uživatelů za měsíc v MySQL

Zde je dotaz SQL pro získání kumulativního celkového počtu uživatelů podle měsíce v MySQL. V dotazu SQL, abyste získali kumulativní celkový počet uživatelů za den, stačí změnit funkci agregace v dílčím dotazu od date(date_joined) na date_format(date_format,‘%b‘) .

mysql> set @csum := 0;

mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select date_format(date_joined,'%b') as date_joined,
               count(user_id) as new_users
             from users
             group by date_format(date_joined,'%b')
            ) as temp
            order by date_joined;

Bonusové čtení:Jak získat údaje o prodeji za poslední 3 měsíce v MySQL

Jak získat kumulativní celkový počet uživatelů za čtvrtletí v MySQL

Zde je dotaz SQL pro získání kumulativního celkového počtu uživatelů podle čtvrtletí v MySQL. V dotazu SQL, abyste získali kumulativní celkový počet uživatelů za den, stačí změnit funkci agregace v dílčím dotazu od date(date_joined) do čtvrtletí(formát_data) .

mysql> set @csum := 0;
mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select quarter(date_joined) as date_joined,
               count(user_id) as new_users
             from users
             group by quarter(date_joined)
            ) as temp
            order by date_joined;

Jak získat kumulativní celkový počet uživatelů za rok v MySQL

Zde je dotaz SQL pro získání kumulativního celkového počtu uživatelů podle roku v MySQL. V dotazu SQL, abyste získali kumulativní celkový počet uživatelů za den, stačí změnit funkci agregace v dílčím dotazu od date(date_joined) do year(date_format) .

mysql> set @csum := 0;
mysql> select date_joined,new_users, (@csum := @csum + new_users) as total_users
            from (
             select year(date_joined) as date_joined,
               count(user_id) as new_users
             from users
             group by year(date_joined)
            ) as temp
            order by date_joined;

A je to! Můžete zkusit výše uvedené dotazy SQL, abyste získali kumulativní celkový počet uživatelů za den v MySQL. Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze MySQL, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.

  1. mysql uložená procedura, která se volá rekurzivně

  2. Poddotazy TypeORM

  3. Příkaz SQL CASE:Co to je a jaké jsou nejlepší způsoby jeho použití?

  4. Jak SOUNDS LIKE funguje v MariaDB