Php 根据周将日期范围拆分为周和总和列
所以我从一个数据库中调用数据,其中每个记录都与一列“开始时间”、“不显示”和“取消”相关联。是否成功出勤取决于“没有显示”和“取消”==0 我想查看这项选择的结果,并每周(根据开始时间)统计没有演出、取消和出席的人数。我怎样才能做到这一点 用户将提供一个日期范围,数据库将根据该日期范围选择记录。现在,这个日期范围必须按周分割,然后得到计数。我完全陷入了按周计算的部分。这就是我到目前为止所做的:Php 根据周将日期范围拆分为周和总和列,php,mysql,Php,Mysql,所以我从一个数据库中调用数据,其中每个记录都与一列“开始时间”、“不显示”和“取消”相关联。是否成功出勤取决于“没有显示”和“取消”==0 我想查看这项选择的结果,并每周(根据开始时间)统计没有演出、取消和出席的人数。我怎样才能做到这一点 用户将提供一个日期范围,数据库将根据该日期范围选择记录。现在,这个日期范围必须按周分割,然后得到计数。我完全陷入了按周计算的部分。这就是我到目前为止所做的: // Multidimensional Array with [boolean][week #
// Multidimensional Array with [boolean][week #]
$no_shows_weekly = [
'no_show' => [],
'week' => []
];
$cancelled_weekly = [
'cancelled' => [],
'week' => []
];
$attended_weekly = [
'attended' => [],
'week' => []
];
foreach($result as $r) {
$start_time = new DateTime($r['start_time']);
if($r['is_no_show'] == 0 && $r['is_cancelled'] == 0) {
array_push($attended_weekly['attended'], 1);
array_push($attended_weekly['week'], date_format($start_time, "W"));
}
else {
array_push($attended_weekly['attended'], 0);
array_push($attended_weekly['week'], date_format($start_time, "W"));
}
array_push($no_shows_weekly['no_show'], $r['is_no_show']);
array_push($no_shows_weekly['week'], date_format($start_time, "W"));
array_push($cancelled_weekly['cancelled'], $r['is_cancelled']);
array_push($cancelled_weekly['week'], date_format($start_time, "W"));
}
echo json_encode(array(
'success'=> 1,
'msg'=>
array(
'No Shows' => $no_shows_weekly,
'Cancellations' => $cancelled_weekly,
'Attendend' => $attended_weekly
)
));
在这段时间里,我无法进行任何计数,我只是提取数据,并将数据分成相应的数组
我想将数据拉入如下内容:
Week 50: {No_Shows: 10, Cancelled: 5, Attended: 25}
Week 52: {No_Shows: 10, Cancelled: 5, Attended: 25}
一般数据库结构:
+------------+-----------+-----------+
| start_time | no_shows | cancelled |
+------------+-----------+-----------+
| 2019-12-20 | 1 | 0 |
| 2019-12-21 | 0 | 0 |
| 2019-12-22 | 0 | 1 |
我也尝试在MySQL中这样做:
SELECT
WEEKOFYEAR('start_time') AS weekno,
SUM('is_no_show' = 1) AS no_shows,
SUM('is_cancelled' = 1) AS cancelled
FROM
myTable
WHERE
(
`start_time` > '2019-12-01' AND `start_time` < '2019-12-07'
) AND category LIKE 'Continued Probation'
GROUP BY
weekno
选择
WEEKOFYEAR(“开始时间”)作为weekno,
SUM('is_no_show'=1)作为no_show,
金额('is_cancelled'=1)已取消
从…起
我的桌子
哪里
(
`开始时间“>'2019-12-01”和“开始时间”<'2019-12-07”
)以及“继续试用”之类的类别
分组
威克诺
但是,这个语句对我来说返回Null。任何建议都将不胜感激!谢谢单引号用于字符串(和日期文字),而不是字段标识符;对于您使用的
`
。在WHERE条件中使用了正确的表达式,但在SELECT表达式中没有使用。另外,就像没有通配符的
相当于=
@uuerdo哇这解决了所有的问题lol。为了得到总参与人数,虽然可以得到总记录,然后减去(没有显示+取消)?你提供的有限数据很难判断,但是如果开始时间是某种形式,正在参加的活动的标识符,并对每个。。。预订(?)和no_shows
和cancelled
基本上是每个可能的与会者的标志,然后记录计数-no shows和cancelled sounds之和。