SQLクエリをまとめて、過去1週間に注目されたニュースのトップ10を収集しようとしています。また、同じニュースアイテムを見た重複IPアドレスをフィルタリングするためにも必要です。
ユーザーがページに入るたびに、ユーザーのブラウザクエリ文字列が取得されます。
dbセットアップの例を次に示します。
datetime | ipaddress | querystring
-----------------------------------------
9/12/2011 | 65.65.65.651 | newsid=3512
9/12/2011 | 65.65.65.658 | newsid=3512
10/12/2011 | 65.65.65.653 | newsid=3514
11/12/2011 | 65.65.65.656 | newsid=3515
11/12/2011 | 65.65.65.651 | newsid=3515
13/12/2011 | 65.65.65.651 | newsid=3516
14/12/2011 | 65.65.65.650 | newsid=3516
14/12/2011 | 65.65.65.650 | newsid=3516
私の失敗した試み:
SELECT DISTINCT TOP 10 ipaddress, querystring, Count(*) AS thecount
FROM [thedb].[dbo].[tblwebstats]
WHERE querystring LIKE '%newsid=%' AND datetime > (1 week ago)
GROUP BY querystring, ipaddress
ORDER BY Count(*) DESC
私を助けてください :)