2016-10-27 19 views
0

這是很難解釋在一個問題,但是這裏。如何獲取一個表格顯示每個用戶在一段時間內的事件?

在MySQL數據庫中,我有一個名爲視頻的表格,其中包含所有創建的視頻。 的結構是這樣的

id 
owner 
title 
created_at 

我有另一個表的用戶,這樣的事情

id 
name 
created_at 

的目標是獲得下圖 enter image description here

X軸爲當月# y軸是每月視頻數量

如您所見,它顯示h每個用戶每月創建很多視頻。但第一個月始終是用戶創建日期後的30天。因此,對於用戶本,它將從2016-10-01到2016-11-01,但對瑞克是從2016-08-01到2016-09-01

因此,對於本月的第一個月,它是不同的從瑞克的第一個月大約60天。

但我想告訴所有的人都爲一個月#1

我的解決方案對於現在的圖形是「正常化」的數據。因此,爲了獲得Ben的數據,我將固定日期(我將其設置爲2016-01-01)與日期差異進行了計算。

然後我減去了所有視頻的天這樣所有的視頻第一個月將是2016年1月1日至2016年2月1日

這個工程的數量,但我真的很不知道這是否是最好的方法。

任何人有更好的想法如何做到這一點?

謝謝

+1

一個友好的建議,使用這種工具來顯示示例數據:http://www.tablesgenerator.com/text_tables。它真的幫助理解您的數據模式,並使其更直觀。 – Wistar

+0

對我來說聲音OK,但不是使用固定的日期,而是使用'MIN(日期) –

回答

0

我被告知有更好的方法來做到這一點。 而是作爲正常化我在做的日期,​​我們只需要創建一個新的屬性

我更新了我的create_video事件有一個像age_of_user的屬性。然後我可以group_by age_of_user查看他們在多少個月內上傳了多少個視頻。

喜歡的東西

{ 
    age_of_user: { 
    days: 64, 
    weeks: 9 
    months: 2, 
    } 
} 

與這個新屬性創建的每一個事件。 當我按月查詢I組並按用戶獲取我需要的所有數據時

這樣我就不需要搞亂視頻的時間戳了,我可以在不同的查詢中使用它。

相關問題