我有一个如下所示的数据库:(日期格式为 strtotime
)
ID Date
1 1338366170000
2 1337761370000
3 1337761370000
4 1337761370000
5 1337156570000
6 1331713370000
7 1331713370000
如您所见,一些条目来自同一日期。我现在想抓取每个日期并计算它发生的频率。
所以最终结果应该是这样的:
Date: 1338366170000
Count: 1
Date: 1337761370000
Count: 3
Date: 1337156570000
Count: 1
Date: 1331713370000
Count: 2
我目前这样做是为了获取所有日期并计算每个日期:
首先我抓取所有行:
$stats = $sql->query("SELECT * FROM stats_clicks");
现在,当我尝试对具有相同日期的条目进行计数时,我认为问题开始了:我遍历所有结果并搜索每个日期并对其进行计数。
foreach($sql->get() as $result){
//Sum clicks for each date
$date = $result["date"];
$stats = $sql->query("SELECT * FROM stats_clicks WHERE date = '$date'");
$count = count($sql->get());
echo "Date: $date<br>Count: $count<br><br>";
}
输出是:
Date: 1338366170000
Count: 1
Date: 1337761370000
Count: 3
Date: 1337761370000
Count: 3
Date: 1337761370000
Count: 3
Date: 1337156570000
Count: 1
Date: 1331713370000
Count: 2
Date: 1331713370000
Count: 2
如何避免多次输出每个日期,而是每个日期只输出一次且计数正确?
最佳答案
SELECT `Date`, COUNT(`Date`) as `Count`
FROM stats_clicks
GROUP BY `Date`
结果
Date Count
1331713370000 2
1337156570000 1
1337761370000 3
1338366170000 1
关于php+MYSQL+一次获取n行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813108/