Mysql
 sql >> база данни >  >> RDS >> Mysql

Извличане на текущия общ рекорден растеж с течение на времето в mysql

В крайна сметка използвах решение, което включва променливи, въз основа на отговор на Stack Overflow, публикуван тук . Това решение изглежда е малко по-гъвкаво и ефективно от другите предоставени отговори.

  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;

Имайте предвид, че изискванията за група по, форматиране на дата и диапазон са просто специфики на моя конкретен проект. По-обща форма на това решение (съгласно първоначалния въпрос) би била:

  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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL #1364 - Полето 'column_name' няма стойност по подразбиране - Не може да се вмъкне в DB

  2. Възможно ли е да се дефинира колона с времеви печат, която не е нула и няма по подразбиране и няма специално поведение при актуализиране?

  3. Как да покажа реда на таблицата на mysql като колона

  4. Пълнотекстово индексиране на MyISAM, индексиране на една колона срещу множество колони

  5. Най-добрият начин за събиране и импортиране на данни в drupal?