请帮我在php mysql中按组计算数据

时间:2013-08-13 07:47:25

标签: php mysql

我有一个像这样的表格点击

+-----+-----+-------+-------+
|  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命令适用于此但我不知道如何执行此操作。

请帮助我,我不知道该怎么做,请给我完整的代码来做到这一点。

5 个答案:

答案 0 :(得分:1)

我认为应该是:

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

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

答案 1 :(得分:0)

$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.很抱歉,不是正确的论坛

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这应该会以您要求的格式提供结果:

$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作为新代码。

答案 4 :(得分:0)

编写您的查询,如下所示

$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);