我有一个表中有一个时间戳列,我想要做的是按天分组表的结果并计算当天该表中存在的条目数以及时间戳列表
以下是我正在使用它的代码,但它没有返回任何结果。
$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'];
}
答案 0 :(得分:3)
您的结果集不包含timestamp
和count
列。它 有COUNT(*)
和DAYOFYEAR(timestamp)
。使用别名获取所需的名称。
您可以像这样修改查询:
SELECT COUNT(*) as count,
DAYOFYEAR(timestamp) as timestamp
FROM all_count
GROUP BY DAYOFYEAR(timestamp)
答案 1 :(得分:0)
因为您没有正确调用它,请尝试使用allias并调用别名。
更改此
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 />';
}
答案 2 :(得分:0)
从技术上来说,@ Frits van Campen的答案是正确的,但是如果表格中有太多行,效率非常低。因为,在分组之前,每个时间戳都会转换为dayofyear,而且成本很高。
正确的解决方案是向表中添加一个新列,例如“dayofyear”,并计算“timestamp”列中的值。然后,您可以使用以下查询进行基本且高效的分组:
SELECT COUNT(*) as count FROM all_count GROUP BY dayofyear