【MYSQL】GETパラメーターやハッシュタグが付いたURLを集計する!
MYSQLが苦手な私が難問に直面しました・・
「GETパラメーター(?)」とか「ハッシュタグ(#)」とかが付いたURLってあるじゃないですか。
こんな感じのやつです。
http://hogehoge.com/page/1
http://hogehoge.com/page/1?param=123
http://hogehoge.com/page/1#chapter1
これらをみんな同じURLとみなして、SQLのCOUNTで集計をするというものです。
結論からいうとこんな感じのクエリでいけました。
SELECT url, COUNT(*) AS click_count FROM test_tabel GROUP BY SUBSTRING_INDEX(SUBSTRING_INDEX(url, '#', 1), '?', 1);
内側の「SUBSTRING_INDEX(url, '#', 1)」で、まずはURLのハッシュタグ(#)より前の部分を抜き出します。
続いて外側の「「SUBSTRING_INDEX(url, '?', 1)」」で、URLのGETパラメータ(?)より前の部分を抜き出します。
「#」や「?」が付いてないURLも、そのまま合算して集計されます。
もっとかっこいいやり方があるかもしれないけど、ちゃんと動いてるみたいだしこれでいいか。
以上です・・。