我有一个格式如下的表:
offer_id consumer_id date
1 1 1282454200
1 1 1282453200
2 2 1282453240
1 3 1282455200
2 1 1282453210
“日期”是 unix 格式。
我需要计算所有每日条目,所以如果我有昨天的 10 个条目和今天的 8 个条目,我应该得到:
2013-06-23 10
2013-06-24 8
这是我尝试优化代码的工作的一部分,到目前为止,我一直通过 PHP 代码来做这件事,但你可以想象随着数据库的增长会发生什么:)。这是我正在尝试(未成功)转换为 mysql 的 php(codeigniter)尝试:
foreach ($offers as $item) {
$date = $item->date;
$day_date = date("Y-m-d", $date);
$day_start = strtotime(date("Y-m-d 00:00:00", $date));
$day_end = strtotime(date("Y-m-d 23:59:59", $date));
if (!in_array($day_date, $day_array)) {
$day_array[] = $day_date;
$this->db->where("date >=", $day_start);
$this->db->where("date <=", $day_end);
$this->db->from("offers_consumers_history");
$total_points = $this->db->count_all_results();
$db_date = array($day_date, $total_points);
$data[] = $db_date;
}
}
我基本上抓取了上一个查询中的所有条目并遍历了每个日期,如果日期不在我的最终数组中,我必须通过计算从 00:00:00 到 23:59:59 的所有结果来计算。
在构建等效 SQL 代码方面寻求帮助。