MYSQL:组

时间:2016-07-17 02:47:15

标签: php mysql sql datetime

我有一个名为 time_on_site 的mysql列 该列存储为变量 h:m:s

目前在我的代码中我有以下内容:

foreach($db->query("SELECT country,siteID,referring_site,COUNT(country)
  AS thecount,COUNT(distinct country)
  FROM rotator_tracking WHERE siteID='$_GET[site]'
  GROUP BY country, referring_site ORDER BY thecount ASC") as $row) {  

    if (isset($row['referring_site'])) {  
       echo '
         <tr>
           <td class="country" style="padding: initial;">
           ' . $row['referring_site'] . '
           </td>';  
    } else { 
       echo '
         <tr>
           <td class="country" style="padding: initial;">
           Unknown
           </td>'; 
    } 

       echo '
           <td class="country_referral" style="padding: initial;">
           ' . $row['country'] . '
           </td>';       

       echo '
           <td class="country_referral" style="padding: initial;">
           ' . $row['thecount'] . '
           </td>';       

       echo '
           <td class="country_referral" style="padding: initial;">' . 
           $row['COUNT(distinct country)'] . '
           </td>
         </tr>';  
}  

我想弄清楚如何做的是使用time_on_site中的值添加另一个td,该td显示基于国家/地区和引荐网站分组的网站平均时间。

因此表应该循环:

  

推介网站:国家/地区:总访问量:唯一身份访问次数:网站平均时间

由于日期是一种可变格式,所以看起来并不是简单的并且除以总和。救命?我该怎么做?

1 个答案:

答案 0 :(得分:0)

所以我花了很多时间试图解决这个问题。最后,解决方案相当容易。

由于格式已经是hh:mm:ss没有必要将其保存为varchar,所以我只是将类型从varchar更改为time。

之后,它几乎是标准的。

SELECT SEC_TO_TIME( AVG( TIME_TO_SEC( `time_on_site` ) ) ) 
 AS timeSum, country,siteID,referring_site,COUNT(country) 
 AS thecount,COUNT(distinct country) 
FROM rotator_tracking 
WHERE siteID=':site' 
GROUP BY country, referring_site 
ORDER BY thecount ASC