-6

過去 1 週間、1 か月、1 年などのサイトの上位 10 ページを取得できるようにするコードを PHP で作成しようとしています。現在、1 日あたりのページ ビューは aa テーブルに保存されています。各行には、ページ ID、その日の 0:00 の UNIX タイム スタンプ、およびその日のページビュー数が含まれます。

したがって、私が望むことを達成するには、このテーブルのすべての行を (指定された時間枠で) 選択し、同じページ ID を持つ各行のページビュー数を合計して、上位から下位に並べ替える必要があります。大量のループで非常に複雑でないこれを行う方法は考えられません。誰か私にアイデアがありますか?

ありがとう!

4

3 に答える 3

2

最も簡単な方法は、おそらく、必要な期間ごとにクエリを実行することです

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)すべてのカウントを取得することになります。

于 2013-10-18T13:30:54.290 に答える
0

MySQL の日付関数を使用して、関心のある日付の一部を取り出し、それによってグループ化できます。

たとえば、週ごとに処理している場合は、week() 関数http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_weekを使用して、タイムスタンプを週にすると、各週のヒットがグループ化され、降順で並べ替えて上位 10 を見つけることができます。

于 2013-10-18T13:29:30.217 に答える
0

DATE_SUBをご覧ください

SELECT *
FROM `yourTable`
WHERE `some_time` < DATE_SUB(NOW(), INTERVAL 2 WEEK);

(「2週間」が必要なものです)。

于 2013-10-18T13:31:36.403 に答える