我正在設置一個使用PHP和MySQLi的網站。該網站將流量銷售給其他網站所有者。這裏是我的表,監控有效的廣告系列結構:使用MySQL限制每天發送的訪問者數
id url hits_ordered hits_sent status
1 http://google.com 1000 120 'Active'
2 http://facebook.com 3000 2421 'Inactive'
3 http://yahoo.com 400 12 'Active'
我想要做的就是給人們有橫跨1-90天傳播命中的選項,這樣,他們不只是得到他們全部被淹立刻。所以,我要在結構改成這樣:
id url hits_ordered hits_sent period status
1 http://google.com 1000 120 25 'Active'
2 http://facebook.com 3000 2421 20 'Inactive'
3 http://yahoo.com 400 12 60 'Active'
列period
將代表日活動應所跨的數量。
但我認爲可能會更好地添加兩列,而不是顯示廣告系列開始時間(start_time
)和廣告系列完成時間(end_time
)。
如果我有開始和結束列,是否有任何方式與MySQL數學計算是否一個活動落後於計劃並選擇它?
例如,如果某人訂購了10,000次點擊並希望他們在5天內交付。如果在第四天,他們只有2000次點擊,顯然它會「落後於」,因爲它應該有8000-10000次點擊。
我知道有一些方法可以用PHP來計算。我只是想弄清楚是否有辦法用純粹的MySQL來選擇所有落後於計劃的行。
似乎應該有一種方法來查詢這些行,因爲MySQL可以執行數學計算,知道總髮送次數,總金額順序以及開始/結束日期。
================
@ICE以下的另一個示例。這一行將落後於計劃:
id url hits_ordered hits_sent start_date end_date
1 http://google.com 1000 5 2016-12-23 00:00:00 2016-12-28 00:00:00
這是落後的,因爲自23日訂購以來只發送了5次點擊。現在是25日,到28日結束。所以根據我上面的邏輯,它應該被視爲「落後」。
而且此行不會是:
id url hits_ordered hits_sent start_date end_date
1 http://google.com 1000 999 2016-12-23 00:00:00 2016-12-28 00:00:00
在這個例子中,日期是相同的,但我們999 1000的點擊率已經發送。它不會落後於時間表。
它與你所問的內容無關,但'status'類型對數據庫規範化非常不利。如果它只有活躍和不活躍的價值最好是BOOLEAN。 – ICE