3つの列を持つ単純なreferrers
テーブルがあります。
Referrer //string name of partner
TimeOfVisit //timestamp
SessionID //(unique id only used when joining with sales data for conversion)
分析用のデータを取得し、訪問者のリファラーソースを示す毎日の列を含む積み上げ縦棒グラフを提示したいと思います。
これは私がまとめることができたクエリです:
SELECT
DATE(TimeOfVisit) AS Date,
Referrer,
COUNT(Referrer) AS VisitorCount
FROM referrers
GROUP BY CONCAT(DATE(time_of_visit), referrer)
それは私が探しているデータを私に与えるようなものです:
Array
(
[0] => Array
(
[Date] => 2012-04-01
[Referrer] => adwords
[VisitorCount] => 3
)
[1] => Array
(
[Date] => 2012-04-01
[Referrer] => facebook
[VisitorCount] => 5
)
[2] => Array
(
[Date] => 2012-04-02
[Referrer] => adwords
[VisitorCount] => 6
)
...
これには2つの問題があります。
- 連結された文字列によるグループ化は恐ろしいことだと私でも感じることができますが、それは正しく感じられません。
- 結果を解析するphpスクリプトは、常に現在のリファラーの完全なリストを知る必要があるため、特定の日にリファラーからのクリックがなかった場合に備えて、0の値を割り当てることができます。控えめに言っても、あまりエレガントではありません。
この問題を解決するための最も効果的な方法は何ですか?それは実際にMySQLでのみ解決できますか?