2017-04-24 226 views
0

我正在研究一個項目,在那裏我搜索一個wifi信號(從手機等)。它檢測到無線傳感器半徑周圍的每個mac地址。然後將這些數據從服務器發送到數據庫,該數據庫使用報告工具顯示統計信息。這可以在商店中用於研究客戶行爲。計算每天兩個日期之間的時間

這是數據的樣子:

enter image description here

的事情是,我想知道條目之間的時間,問題是,如果一個人在店裏停留10分鐘就西港島線顯示很多地址,我想要計算的是訪問之間的差異。所以我需要做的就是計算當天到他們來的第二天之間的時間。

然後我想在下面的表格中顯示它。

current time  | next time they came | Time between visist 
------------------------------------------------------------------- 
*current time*  | *other day*   | *Time between visits* 

我不知道我應該怎麼做,抽象思維總是歡迎

P.S如果有任何丟失的信息,請評論。我是新來的論壇。

+0

@RiggsFolly它重複嗎?這是關於MySQL,鏈接的問題是關於PHP ... –

+0

@RiggsFolly這個問題是一個mySSQL的問題?所以它不是重複的? – tom

+0

@StefanoZanini啊,你可能是對的。我將刪除DUP。 – RiggsFolly

回答

0

所有您需要的是time字段翻譯成其可讀的日期部分的第一

select date(from_unixtime(`time`)) from yourTable; 

這個值可以是一個自我的加盟標準join

select t1.address, 
     from_unixtime(t1.`time`), 
     min(from_unixtime(t2.`time`)) 
from yourTable t1 
left join 
     yourTable t2 
on  t1.address = t2.address and 
     date(from_unixtime(t1.`time`)) < date(from_unixtime(t2.`time`)) 
group by t1.address, from_unixtime(t1.`time`) 

這將讓你爲每個地址和每個訪問時間,最早訪問時間在不同的一天。

從那裏,你可以返回的時間差

select tt.address, 
     tt.visit, 
     tt.next_visit, 
     timediff(coalesce(tt.next_visit, tt.visit), tt.visit) as `interval` 
from (
      select t1.address, 
        from_unixtime(t1.`time`) as visit, 
        min(from_unixtime(t2.`time`)) as next_visit 
      from yourTable t1 
      left join 
        yourTable t2 
      on  t1.address = t2.address and 
        date(from_unixtime(t1.`time`)) < date(from_unixtime(t2.`time`)) 
      group by t1.address, from_unixtime(t1.`time`) 
     ) tt 

的​​3210是爲了避免有nulltimediff功能,這將發生的每個地址的最後一次訪問。

+0

我明白你的意思,但我得到一個錯誤消息https://gyazo.com/5172fa05e9a6876eeef070f710e94179 – tom

+0

這是因爲間隔是一個關鍵字,對不起!你可以使用另一個別名(比如intvl或其他)或者用反引號包圍這個單詞。我用後面的選項編輯了我的答案 –

+0

Awhhh我明白了!謝謝!只有現在我收到此錯誤消息https://gyazo.com/4a5ff42cbd82587b0cbe8affd2024cea – tom

相關問題