php - 每日页面比例MySQL查询

标签 php mysql

我正在使用 cookie 来跟踪网站流量,然后将其写入数据库。

我正在尝试获取我的着陆页 index.php 与所有其他页面的平均值的每日比率,以在图表中显示。

我正在为 MySQL 查询的语法而苦苦挣扎。

我想从查询中获取 2 个值:$row->day 和 $pageRatio 并显示过去 30 天的这些值。

我的数据库包含一个名为tracking 的表,其中包含以下字段:id、cid、referrerDomain、referrer、page、ip、reverseIP、userAgent、lang、date

page 字段包含网页名称,例如:index.php、other.php 等

$sql = "SELECT (
                 SELECT COUNT(`page`) FROM `tracking`
                 WHERE `page` = 'index.php'
                 AND DISTINCT(`date`)
                 GROUP BY DATE(`date`) ) AS indexCount,

             (
             SELECT COUNT(`page`) FROM `tracking`
             WHERE `page` != 'index.php' 
             AND `date`
             BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY)
             AND NOW()
             GROUP BY DATE(`date`) ) AS otherPageCount,

                 DATE(`date`) AS day
                 FROM `tracking`
                 WHERE `date`
                 BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY)
                 AND NOW()
                 GROUP BY DATE(`date`)";

      $sqlprep = $conn->prepare($sql); 

      if($sqlprep->execute()) {
                $completedAmount = 0;
          while($row = $sqlprep->fetch(PDO::FETCH_OBJ)){

                $pageRatio = $row->indexCount / $row->otherPageCount;

                echo "['" . $row->day . "', " . $pageRatio . "],\n";

           }

         }

我找到的解决方案是此处接受的答案:How do I combine these 3 queries into one MySQL query?

SELECT DATE(`date`),
       COUNT(`page`) AS indexCount, 
       SUM(`page` = 'index.php') as idx_count, 
       SUM(`page` <> 'index.php') as not_idx_count
FROM `tracking`
WHERE `date` BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY) AND NOW()
GROUP BY DATE(`date`)

最佳答案

也许这也行

SELECT DATE(`date`),
       COUNT(`page`) AS indexCount, 
       SUM(`page` = 'index.php') as idx_count, 
       SUM(`page` <> 'index.php') as not_idx_count
       TIMESTAMPDIFF(DAY,date,now()) as days
FROM `tracking` GROUP BY DATE(`date`) having days <30

关于php - 每日页面比例MySQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19283365/

相关文章:

.net - LINQ to MySql 数据提供程序

php - 摆脱 Wordpress 中 2016 主题页脚下方的空白

php - 动态加载时无法访问 $_GET

javascript - 在 ng-repeat 中多次使用 AngularJs 组件

php - Nginx Laravel 配置返回 403

php - 没有使用外键将数据插入数据库

mysql - -C 和压缩 mysqldump 之间有什么区别?

PHP - 创建函数问题

php - Solr 5.1.0 dataimporthandler 目录为空

php - 仅在自定义验证器字段上需要 Symfony 表单