请帮助我在php-mysq中按组统计数据


Please help me in php mysq to count data by group

我有一个类似的表点击

+-----+-----+-------+-------+
|  id |   time   |   site   |
+-----+-----+-------+-------+
|  1  | 8 4 2013 |   site1  |
|  2  | 8 4 2013 |   site1  |
|  3  | 9 4 2013 |   site2  | 
|  4  | 6 4 2013 |   site1  |
+-----+-----+------+--------+

我想显示这样的结果

   Date      |       Count
  8 4 2013   |       2 click
  6 4 2013   |       1 click

我有这个代码

$id = 'site1';
$getclk = mysql_query("SELECT * FROM clicks WHERE site='$id'");
$clk = mysql_num_rows($getclk);
print $clk;

这段代码只显示行数,我想显示按时间分组的行数。

GROUP BY命令适用于此,但我不知道如何做到这一点。

请帮帮我,我不知道怎么做,请给我完整的代码来做这件事。

我认为应该是:

SELECT COUNT (id) as countClicks, time as Date
FROM clicks
[WHERE site = ?]
GROUP BY time
ORDER BY countClicks DESC

此外,您不应该使用mysql_*函数,因为它们已被弃用。

$getclk="SELECT date,count(*) as c FROM Clicks WHERE site='$id' GROUP BY date ORDER BY c DESC";

然后循环显示结果。please give me full code to do this.很抱歉,这不是的合适论坛

SELECT time, COUNT(*) as count FROM clicks GROUP BY time

这应该会以您要求的格式给出结果:

$getclk = mysql_query("select time as Date, concat(count(*), ' click') as Count 
                       from Clicks 
                       where site = '$id' 
                       group by time 
                       order by Count desc");

请注意,使用mysql函数concat()函数将click文本附加到Count列下按时间分组的记录数中会更好,如果您将该文本附加在php中而不是mysql中,这样从数据库服务器传输的数据就会更少。

正如其他回答者已经意识到的那样,mysql_函数是不推荐使用的,对于新代码,应该使用mysqlipdo

像下面的一样编写您的查询

$id = 'site1';
$getclk = mysql_query("SELECT count(id) as clcount,time FROM clicks WHERE site='$id' group by time order by time");
$clk = mysql_num_rows($getclk);
print_r($clk);