【问题标题】:How to get a number of amount of addresses per day per month如何获得每月每天的地址数量
【发布时间】:2017-09-17 02:51:18
【问题描述】:

我有一个数据库,所有来自 wifi 传感器的数据都在其中。每个移动设备都会 ping 一个“地址”,所以每个移动设备每天都会发送很多地址,我现在想要从每个地址查看它来了多少次,例如在 4 月、3 月,所以我想从每个“地址”中查看“一个月来了多少次(别忘了你不能只计算它,因为你每天会收到很多地址,我需要把每天所有的地址都计算为 1 而不是 10,例如,如果 4 月 14 日有 10 个地址) .

Database I use

我想要什么

Address   |  Times
---------------------
adf9edb6GK| 2 times
adf9edb2933| 4 times
qwertdb2933| 1 times

我尝试的是这样的:

选择地址, from_unixtime((sensordata1.time), '%Y-%m-%d') 作为数据, count(distinct floor(time) / (24*60*60)) as Aantal_keer_per_maand 来自 sensordata1 哪里 (FROM_UnixTime((sensordata1.time), '%Y-%m-%d') BETWEEN #startDate# AND #endDate#) 按地址、数据分组;

【问题讨论】:

    标签: mysql sql count timestamp datediff


    【解决方案1】:

    您正在寻找count(distinct):

    select address,
           count(distinct floor(time) / (24*60*60)) as numDays
    from t
    group by address;
    

    【讨论】:

    • 这是每天的地址数量我需要知道的是每月有多少时间。并且每天的金额需要计为1而不是地址的数量
    • @thattom 。 . .不,这个查询是每月的天数,而不是每天的地址。
    • @Gordon_Linoff 但我需要将一天的 20address 算作 1 而不是数量本身,因为现在我得到了一些价值 134 或更高的值,这对于一个月 30 天是不可能的。跨度>
    • @thattom 。 . .您需要一个where 子句来指定月份。
    • 这是我得到的,但它仍然给我很高的数字:选择地址,from_unixtime((sensordata1.time), '%Y-%m-%d') 作为数据,count(不同的 floor(time) / (24*60*60)) as Aantalkeer from sensordata1 where (FROM_UnixTime((sensordata1.time), '%Y-%m-%d') BETWEEN #startDate# AND #endDate#) group by数据,地址;
    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 2017-09-15
    相关资源
    最近更新 更多