【问题标题】:How can I see how many times a person came per month (SQL)如何查看一个人每月来了多少次(SQL)
【发布时间】:2017-04-20 08:27:27
【问题描述】:

对于我的系统,我想知道访客来我店的次数。我有 wifi 传感器,他们有很多地址,我想知道访客一个月来了多少次

This is the database I use (time is in unix time and get fixed with FROM_UnixTime(sensordata1.time)

所以我想得到的是上个月访问次数的地址。(每天不是每个地址,所以如果他每天来 5 次算作 1)

【问题讨论】:

  • 以纯文本形式发布表格。展示您尝试过的 SQL,并解释为什么它不适合您。为您定义什么是“上个月”。过去 30 天?过去 31 天?三月?
  • 我没有尝试任何东西,因为我不知道从哪里开始,我的意思是像三月,四月这样的月份
  • 很难猜出你卡在哪里了。您只需要一个月的数据。那你该怎么办?当然使用WHERE 子句。您希望每人一份记录。那你该怎么办? GROUP BY自然人。你想计算不同的日子,所以在当天使用COUNT(DISTINCT )。尝试编写该查询并在遇到无法解决的问题时返回。
  • 再一次:将表格发布为文本,如果您需要帮助。它还有助于显示示例表数据的所需输出。但如前所述,现在你应该尝试自己解决这个问题。这并不难。必要时回来。
  • 我知道这并不难,但我知道该怎么做,但打字是第二件事。每次如果我看到它是如何完成的,我就会从中学习并在下一次知道它!顺便说一句,下次我将表格作为文本发布! :)

标签: mysql sql timestamp datediff


【解决方案1】:

您希望查看 2017 年 3 月。因此,请在 WHERE 子句中将结果限制在 2017 年 3 月。您希望每个访问者(地址)有一个结果行。所以GROUP BY 地址。你想每天只计算一次。所以COUNT DISTINCTdays。

select 
  address,
  count(distinct from_unixtime(sensordata1.time, '%Y-%m-%d'))
from sensordata1 
where from_unixtime(sensordata1.time, '%Y-%m') = '2017-03'
group by address;

如果您希望这更灵活,即始终执行查询时的最后一个月,而不是固定的 2017-03,然后找到今天,减去一个月,然后得到这样的月份。

【讨论】:

  • 抱歉其他帖子没有看到你的答案!但是对于这个答案,唯一的问题是我希望这个来自我们现在所在的月份,而不是来自设定的月份
  • 那么是什么阻止你这样做呢?这不是代码编写服务。您拥有所需的所有信息。 Simnply 用代码替换 '2017-03' 以获取当前日期的年份和月份。开始自己做一些事情,而不是让我们编写您需要的确切查询。
  • 问题是我尝试使用:MONTH(getdate()),但我用作仪表板的程序不允许我使用它,所以我现在不知道如何设置当前月份。
  • 你想要'%Y-%m'。要从某个日期(例如CURDATE())获取此信息,您可以使用DATE_FORMATdev.mysql.com/doc/refman/5.5/en/date-and-time-functions.htmlGETDATE 是 SQL-Server,而不是 MySQL。
  • 好的!谢谢那个小费! select address, count(distinct from_unixtime(sensordata1.time, '%Y-%m-%d')) 作为 sensordata1 的常客,其中 from_unixtime(sensordata1.time, '%Y-%m-%d') BETWEEN #startDate# AND #endDate# 按地址分组;这就是我现在得到的,我想从最高数字到最低数字我该怎么做?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
相关资源
最近更新 更多