微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL累积和按日期分组

如何解决MySQL累积和按日期分组

起初,我不明白您要尝试进行总运行。外观如下:

SET @runningTotal = 0;
SELECT 
    e_date,
    num_interactions,
    @runningTotal := @runningTotal + totals.num_interactions AS runningTotal
FROM
(SELECT 
    DATE(eDate) AS e_date,
    COUNT(*) AS num_interactions
FROM example AS e
GROUP BY DATE(e.Date)) totals
ORDER BY e_date;

由于您的加入,您可能会得到重复。也许e1某些行有多个匹配项,这使您的人数膨胀了。要么连接中的比较,要么还比较秒,这不是您期望的。

无论如何,不​​要将datetime字段分成几天和几个月,而只是从中剥离时间。这是您的操作方式。

SELECT
   DATE(e.Date) AS e_date,
   count(e.ID) AS num_interactions
FROM example AS e
JOIN example e1 ON DATE(e1.Date) <= DATE(e.Date)
GROUP BY DATE(e.Date);

解决方法

我知道有一些与此相关的帖子,但是我的情况有些不同,因此我希望获得一些帮助。

我需要从数据库中提取一些数据,这些数据是每天交互的累积计数。目前这就是我所拥有的

SELECT
   e.Date AS e_date,count(e.ID) AS num_interactions
FROM example AS e
JOIN example e1 ON e1.Date <= e.Date
GROUP BY e.Date;

这样的输出接近我想要的,但不完全是我所需要的。我遇到的问题是日期与发生互动的时分秒存储在一起,因此group by不能将天分组在一起。

这就是输出的样子。http://screencast.com/t/N1KFNFyil
12月23日有5次互动,但由于时间戳不同,因此未归类。所以我需要找到一种忽略时间戳的方法,而只看一天。

如果我尝试将GROUP BY DAY(e.Date)其仅按日期进行分组(即,每个月的1日发生的所有事件都分组为一行),并且输出结果根本不是我想要的http://screencast.com/t/HN6DH3GV63M

GROUP BY DAY(e.Date),MONTH(e.Date) 将其按月和月中的天进行拆分,但计数再次关闭。

我根本不是MySQL专家,所以我对丢失的内容感到困惑

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。