0

嗨,我有一个表,其中有一个时间戳列,我要做的是按天对表的结果进行分组,并计算该表中当天存在多少条目以及时间戳列表。

下面是我正在使用它的代码,但它没有返回任何结果。

 $query1 = "SELECT COUNT(*),  DAYOFYEAR(timestamp) FROM all_count GROUP BY   DAYOFYEAR(timestamp)";
 $result = mysql_query($query1);
 while($row = mysql_fetch_array($result))
 {
 echo $row['timestamp'];    
 echo $row['count'];
 }
4

3 回答 3

3

您的结果集不包含列timestampcount。它确实COUNT(*)DAYOFYEAR(timestamp)。使用别名得到你想要的名字。

您可以像这样修改查询:

SELECT COUNT(*) as count,
  DAYOFYEAR(timestamp) as timestamp
FROM all_count
GROUP BY DAYOFYEAR(timestamp)
于 2013-04-28T13:51:10.183 回答
0

因为您没有正确调用它,请尝试使用别名并调用别名。

改变这个

 SELECT COUNT(*) , DAYOFYEAR(timestamp)

 SELECT COUNT(*) as count,  DAYOFYEAR(timestamp) as days

和这个

 echo $row['timestamp'];  

echo $row['days'];  

这里应该是你的代码

 $query1 = "SELECT `timestamp` ,COUNT(*) as count,  DAYOFYEAR(timestamp) as days FROM all_count GROUP BY    DAYOFYEAR(timestamp)";
  $result = mysql_query($query1);
  while($row = mysql_fetch_array($result))
 {
 echo $row['days'];    
 echo $row['count'].'<br />';
  }
于 2013-04-28T13:49:42.010 回答
0

从技术上讲,@Frits van Campen 的答案是正确的,但是如果表格中的行太多,效率就会很低。因为,在分组之前,每个时间戳都会被转换为 dayofyear,而且成本很高。

正确的解决方案是在表中添加一个新列,比如“dayofyear”,然后计算“timestamp”列中的值。然后,您可以使用以下查询进行基本且有效的分组:

SELECT COUNT(*) as count FROM all_count GROUP BY dayofyear
于 2013-04-28T14:07:04.650 回答