gpt4 book ai didi

mysql - 获取 count(),其中 created_date 是累积的且基于日期

转载 作者:行者123 更新时间:2023-11-29 05:13:01 24 4
gpt4 key购买 nike

我知道关于累积总数的 SO 有几个答案。我进行了试验,但没有找到解决问题的方法。

Here是一个 sqlfiddle。

我们有一个包含两个字段的联系人表,eid 和 create_time:

eid create_time
991772 April, 21 2016 11:34:21
989628 April, 17 2016 02:19:57
985557 April, 04 2016 09:56:39
981920 March, 30 2016 11:03:12
981111 March, 30 2016 09:36:48

我想在每个月底选择每个月的新联系人数量以及我们联系人数据库的大小。按年和月划分的新联系人非常简单。对于每个月末的联系人表的大小,我做了一些研究并且 found what looked to be a straight forwards method :

set @csum = 0;
select
year(c.create_time) as yr,
month(c.create_time) as mth,
count(c.eid) as new_contacts,
(@csum + count(c.eid)) as cumulative_contacts
from
contacts c
group by
yr,
mth

运行但给了我意想不到的结果。

如果我运行:

select count(*) from contacts where date(create_time) < current_date

我得到表146的记录总数。

因此,我希望使用 @csum 的查询中的最后一行在 2016 年 4 月有 146 个。它只有 3 个?

我对字段 cumulative_contacts 的目标是什么:对于记录与例如2016 年 1 月。

select count(*) from contacts where date(create_time) < '2016-02-01';

二月份的记录应该是:

select count(*) from contacts where date(create_time) < '2016-03-01';

等等

最佳答案

试试这个,对你的 sql 做一些修改;)

CREATE TABLE IF NOT EXISTS `contacts` (
`eid` char(50) DEFAULT NULL,
`create_time` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

INSERT INTO `contacts` (`eid`, `create_time`) VALUES
('991772', '2016-04-21 11:34:21'),
('989628', '2016-04-17 02:19:57'),
('985557', '2016-04-04 09:56:39'),
('981920', '2016-03-30 11:03:12'),
('981111', '2016-03-30 09:36:48');

SET @csum = 0;
SELECT t.*, @csum:=(@csum + new_contacts) AS cumulative_contacts
FROM (
SELECT YEAR(c.create_time) AS yr, MONTH(c.create_time) AS mth, COUNT(c.eid) AS new_contacts
FROM contacts c
GROUP BY yr, mth) t

输出结果为

| yr   | mth | new_contacts | cumulative_contacts | 
------ ----- -------------- ---------------------
| 2016 | 3 | 2 | 2 |
| 2016 | 4 | 3 | 5 |

关于mysql - 获取 count(),其中 created_date 是累积的且基于日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com