我正在嘗試在PHP中編寫一些代碼,這將允許我在上個星期,每月,每年等網站上獲得前10個網頁。目前,每天的頁面瀏覽量都存儲在一個表格中。每行都包含頁面ID,當天0:00的unix時間戳和當天的瀏覽量。我如何通過ID(PHP)添加和排序MySQL結果
因此,要完成我想要的操作,我需要選擇此表中的所有行(對於我給定的時間範圍),然後將每個行的瀏覽量與相同的頁面id相加,然後對其進行高度排序低。我不能想到這樣做的方式,並不是瘋狂複雜的循環。任何人對我有一些想法?
謝謝!
我正在嘗試在PHP中編寫一些代碼,這將允許我在上個星期,每月,每年等網站上獲得前10個網頁。目前,每天的頁面瀏覽量都存儲在一個表格中。每行都包含頁面ID,當天0:00的unix時間戳和當天的瀏覽量。我如何通過ID(PHP)添加和排序MySQL結果
因此,要完成我想要的操作,我需要選擇此表中的所有行(對於我給定的時間範圍),然後將每個行的瀏覽量與相同的頁面id相加,然後對其進行高度排序低。我不能想到這樣做的方式,並不是瘋狂複雜的循環。任何人對我有一些想法?
謝謝!
您可以使用MySQL日期函數來提取您關心的日期部分,並按照它進行分組。例如,如果您按周處理它,則可以使用week()函數http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_week將時間戳記轉換爲一週,然後將每週的點擊次數分組,並且可以按降序排序以查找前10個。
最簡單的方法可能是簡單地做每個時間段查詢你想
SELECT page_id, SUM(pageviews)
FROM table
WHERE
time BETWEEN yourstarttime AND NOW();
GROUP BY page_id
ORDER BY SUM(pageviews);
yourstarttime
,比如說,過去的一年是DATE_SUB(NOW(), INTERVAL 1 YEAR)
獲得去年的種種罪狀。
看一看DATE_SUB
SELECT *
FROM `yourTable`
WHERE `some_time` < DATE_SUB(NOW(), INTERVAL 2 WEEK);
(隨着 「2周」 是你需要什麼)。
你能告訴我們你到目前爲止寫了什麼嗎? – TimSPQR
學習DAY,MONTH,YEAR,GROUP BY,COUNT和ORDER BY函數關閉MYSQL –