根据 created_at 日期获取每个月的 运行 总数
Get running totals for each month based on created_at date
我正在尝试获取今年每个月的 运行 总数。所以我理想的结果是:
January | 4
February | 5
March | 8
April | 10
May | 12
June | 14
July | 16
August | 17
September | 18
October | 21
November | 22
December | 22
基本计数将只检查一个月的第一天,例如:
January 1 (sum where created_at < January 1, 2018)
February 1 (sum where created_at < February 1, 2018)
March 1 (sum where created_at < March 1, 2018)
April 1 (sum where created_at < April 1, 2018)
...
一次做一个月很容易,因为我可以这样做:
SELECT *
FROM businesses
WHERE created_at < CONCAT(YEAR(CURDATE()), "-12-01 00:00:01")
我尝试使用另一个 Whosebug 答案中的示例之一,但它并没有像预期的那样工作,因为它似乎排序或某些东西搞砸了,所以计数不正确。
您可以在此处查看架构构建和当前 SQL:
http://sqlfiddle.com/#!9/0c23cc/20
尝试这样的事情。
SELECT
MONTHNAME( created_at ) AS theMonth,
(
SELECT
count( * )
FROM
businesses AS u1
WHERE
YEAR ( u1.created_at ) = YEAR ( businesses.created_at )
AND u1.created_at <= date_ADD( last_day( businesses.created_at ), INTERVAL 1 DAY )
) AS totals
FROM
businesses
WHERE
YEAR ( businesses.created_at ) = YEAR ( CURDATE( ) )
GROUP BY
MONTHNAME( businesses.created_at )
ORDER BY
MONTH ( businesses.created_at ) ASC
我正在尝试获取今年每个月的 运行 总数。所以我理想的结果是:
January | 4
February | 5
March | 8
April | 10
May | 12
June | 14
July | 16
August | 17
September | 18
October | 21
November | 22
December | 22
基本计数将只检查一个月的第一天,例如:
January 1 (sum where created_at < January 1, 2018)
February 1 (sum where created_at < February 1, 2018)
March 1 (sum where created_at < March 1, 2018)
April 1 (sum where created_at < April 1, 2018)
...
一次做一个月很容易,因为我可以这样做:
SELECT *
FROM businesses
WHERE created_at < CONCAT(YEAR(CURDATE()), "-12-01 00:00:01")
我尝试使用另一个 Whosebug 答案中的示例之一,但它并没有像预期的那样工作,因为它似乎排序或某些东西搞砸了,所以计数不正确。
您可以在此处查看架构构建和当前 SQL: http://sqlfiddle.com/#!9/0c23cc/20
尝试这样的事情。
SELECT
MONTHNAME( created_at ) AS theMonth,
(
SELECT
count( * )
FROM
businesses AS u1
WHERE
YEAR ( u1.created_at ) = YEAR ( businesses.created_at )
AND u1.created_at <= date_ADD( last_day( businesses.created_at ), INTERVAL 1 DAY )
) AS totals
FROM
businesses
WHERE
YEAR ( businesses.created_at ) = YEAR ( CURDATE( ) )
GROUP BY
MONTHNAME( businesses.created_at )
ORDER BY
MONTH ( businesses.created_at ) ASC