サイトアイコン あみだがみねのもろもろ備忘録

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

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

例えば…
Webアクセスをロギングしている、logテーブル
 ・Time(アクセス時間)
 ・Uri(アクセスページ)
 ・UserAgent(ユーザーエージェント)

から、アクセスの多いページ順にUri(アクセスページ)を並べるには…

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

と、すれば良い。
 
結果…


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に関するエラー)


このページはAMPページです。
👉元のページ(非AMPページ)を表示する
👉あみだがみねのもろもろ備忘録 TOPへ
モバイルバージョンを終了