当前位置: 首页 > 面试题库 >

MySQL累积和按日期分组

谭浩皛
2023-03-14
问题内容

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

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

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专家,所以我对丢失的内容感到困惑


问题答案:

新答案

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

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);


 类似资料:
  • 问题内容: 我有一个看起来像这样的表: 我想添加一个新的列,称为cumulative_sum,因此表如下所示: 是否有可以轻松完成此操作的MySQL更新语句?做到这一点的最佳方法是什么? 问题答案: 如果性能是一个问题,则可以使用MySQL变量: 或者,您可以删除该列并在每个查询中对其进行计算: 这以运行方式计算运行总和:)

  • 问题内容: 快速提问,我有下表 我想将每个月的总数加起来,并按月对总数进行分组。例如, Jan- > 138 Feb-> 88.2 Apr-> 29.84 关于它的任何线索。谢谢 问题答案: 此解决方案将为您提供月份名称作为结果集的列,然后根据需要提供总数。

  • 问题内容: 我在MySQL中有一张表,该表显示了我每天记录的小时数。我正在尝试建立一个视图,该视图将允许我按块/天范围快速将数据分组。最简单的情况是每月一次,这并不难。我可以将日期选择为“%y-%m”,然后按该列分组。 前任: 如果我按月分组,那很好。但是我的问题是,我需要从每月的13号到下个月的12号进行分组(例如:7月13日至8月12日,8月13日至9月12日,等等)。 有没有一种简单的方法可

  • 问题内容: 我有一个称为 activity_dt 的日期时间,数据如下所示: 如何按日期和小时分组? 问题答案: SQL Server: 甲骨文: MySQL的:

  • 问题内容: 我有这样一张桌子: 我首先要最早的名字: (->不起作用!) 现在它应该让我先发疯(早点约会),然后再给汤姆 但是有了,我会先得到新的疯子,因为它会在排序之前先分组! 再次:问题是我无法在分组之前按日期和时间排序,因为GROUP BY必须在ORDER BY之前! 问题答案: 另一种方法: GROUP BY在其找到的第一个匹配结果上进行分组。如果第一个匹配的碰巧恰好是您想要的匹配,那么一

  • 本文向大家介绍Linux基础命令日常积累,包括了Linux基础命令日常积累的使用技巧和注意事项,需要的朋友参考一下 今天又一次搞Linux生产环境搭建。这是种步骤很多,很繁琐而且又不得不做的事情。虽然做过很多次,但还是有很多步骤、命令不记得,每一次到处找资料很麻烦,于是将一些步骤记下,以便查找。 登录远程MySQL 给MySQl非root账户分配权限 给账号user1 密码为123456 的用户t