0

我有一个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
        )
...

我有两个问题:

  1. 即使我能感觉到,通过连接字符串进行分组是可怕的,它只是感觉不对。
  2. 解析结果的 php 脚本总是需要知道当前引用者的完整列表,因此它可以分配 0 值,以防在给定日期没有来自引用者的点击。至少可以说不是很优雅。

解决这个问题最有效的方法是什么?它实际上只能在 MySQL 中解决吗?

4

1 回答 1

0

你可以GROUP BY Date, Referrer

MySQL 结果将有“差距”,在此期间某些引荐来源将有 0 次点击。

假设您正在为引荐来源着色(不确定您有多少)并且您希望每个引荐来源具有一致的颜色,您可以计算一个数字哈希并将其用作预定义颜色数组的索引。

不知道我是否已经解决了你所有的问题,或者你是否理解了我的所有答案,但只是大喊:)

于 2012-05-09T03:25:17.110 回答