【问题标题】:Select grouped data for statistcs选择分组数据进行统计
【发布时间】:2017-02-14 13:14:31
【问题描述】:

我有一个问题,我无法为统计工具正确选择数据。 数据具有可分组字段日期时间和用户 ID(字段名:SID)。

我通过 cron 命令 (PHP / Linux) 每 10 分钟获取一次数据。所以 datetime 字段每次都有很小的差异,比如

2016-09-06 18:10:00
2016-09-06 18:10:05

现在我想选择从每个用户汇总的“全局”数据。 我试过这个命令,但是

  1. 每天只有一个结果(可能没问题)
  2. 它会多次添加来自一个用户的数据。

命令:

SELECT datetime, SUM(view) as viewer, SUM(follow) as follower, 
       SUM(inchat), game, title, online 
FROM `streamerdata` 
GROUP BY DATE(datetime)

所以这个命令给了我非常高的统计结果,这是不正确的。

是否有可能每天/每小时只从每个用户那里收集一个数据行?

【问题讨论】:

  • 如果只需要每天汇总统计信息,为什么还要从 cron 获取更新时间?
  • 单个用户可以看到的静态数据下降到每 10 分钟一次的概览。
  • 是的-有可能-但是您必须重写查询-您提到了用户-但我在您的查询中没有看到对用户的引用-如果您希望每个用户一行-由用户自己分组...如果您想要在时间方面更精确的休息,您也可以这样做
  • 好吧,如果你想按小时获取,那么你必须按小时分组(日期时间)
  • 更大的问题(对我来说)是每个用户每小时/日期只有一行数据,我实际上无法弄清楚该代码

标签: mysql sql datetime group-by statistics


【解决方案1】:

您将在group by 中包含用户:

SELECT DATE(datetime), SID,
       SUM(view) as viewer, SUM(follow) as follower, 
       SUM(inchat), 
FROM streamerdata 
GROUP BY DATE(datetime), SID;

如果"global" data summed from every user 的意思是整天,那么只需将日期从group by 中去掉即可:

SELECT SID,
       SUM(view) as viewer, SUM(follow) as follower, 
       SUM(inchat), 
FROM streamerdata 
GROUP BY SID;

【讨论】:

  • @ChristopherSmith 。 . . “不工作”非常模糊,并没有真正传达任何东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2016-10-09
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
相关资源
最近更新 更多