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

Získejte celkový rekordní růst v průběhu času v mysql

Nakonec jsem použil řešení, které zahrnuje proměnné, na základě odpovědi Stack Overflow zveřejněné zde . Toto řešení se zdá být o něco flexibilnější a efektivnější než jiné poskytnuté odpovědi.

  SELECT u.date,
  @running_total := @running_total + u.count AS count
  FROM (
    SELECT COUNT(*) AS count, DATE_FORMAT(FROM_UNIXTIME(created), '%b %d %Y') AS date
    FROM {users}
    WHERE created >= :start_time AND created <= :end_time
    GROUP BY YEAR(FROM_UNIXTIME(created)), MONTH(FROM_UNIXTIME(created)), DAY(FROM_UNIXTIME(created))
  ) u
  JOIN (
    SELECT @running_total := u2.starting_total
    FROM (
      SELECT COUNT(*) as starting_total
      FROM {users}
      WHERE created < :start_time
    ) u2
  ) initialize;

Všimněte si, že požadavky na seskupení podle, formátování data a rozsah jsou prostě specifika mého konkrétního projektu. Obecnější forma tohoto řešení (podle původní otázky) by byla:

  SELECT u.date,
  @running_total := @running_total + u.count AS count
  FROM (
    SELECT COUNT(*) AS count, DATE(FROM_UNIXTIME(created)) AS date
    FROM {users}
    GROUP BY date
  ) u
  JOIN (
    SELECT @running_total := 0
  ) initialize;


  1. Poskytovatel není kompatibilní s verzí klienta Oracle

  2. SQL Vložit řádek a zkopírovat vložené ID automatického přírůstku do jiného sloupce

  3. Počet registrací uživatelů mysql mezi skupinami

  4. Jak získám plán provádění dotazů na serveru SQL Server?