[SQL]重複データを集計する

投稿


SQLで重複データを数え上げるには、GROUP BYでまとめたものをCOUNT関数で数えれば良い。

例えば…
Webアクセスをロギングしている、logテーブル
 ・Time(アクセス時間)
 ・Uri(アクセスページ)
 ・UserAgent(ユーザーエージェント)
[SQL]重複データを集計する1
から、アクセスの多いページ順にUri(アクセスページ)を並べるには…

SELECT `Uri`, COUNT(`Uri`) FROM `log` 
 GROUP BY `Uri` 
 ORDER BY count(`Uri`) DESC;

と、すれば良い。
 
結果…
[SQL]重複データを集計する2


2013/02/04追記
昨日のアクセスランキングを表示するには、WHERE句を追加すれば良い。

SELECT `Uri`, COUNT(`Uri`) FROM `log`
 WHERE DATE(`Time`) = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
 GROUP BY `Uri`
 ORDER BY count(`Uri`) DESC;

※2018/06/29追記
MySQL5.7からORDER BYの仕様が変わりました。
くわしくはこちら 👉 [MySQL] #1055エラー (ORDER BYに関するエラー)





↓ コメントをどうぞ (URLが含まれるコメントは承認後表示されます) ↓

メールアドレスが公開されることはありません。