我有这样的表sql:
这是我对count tgl的查询:
SELECT count( tgl ) AS total, absen.id
FROM absen
WHERE absen.status = 'm'
GROUP BY absen.id
所以我想通过absen.id和absen.tgl分组 如何从周五到周四分组? 2016-01-08是星期五,2016-01-15是星期四。
答案 0 :(得分:1)
Bellow查询可以带来您想要的结果,但我认为您定义了错误的结束日期,因为在您的示例中从2015-01-08到2015-01-15其8天和1周有7天。< / p>
select
count( tgl ) AS total,
absen.id,
CASE WHEN (weekday(tgl)<=3) THEN date(tgl + INTERVAL (3-weekday(tgl)) DAY)
ELSE date(tgl + INTERVAL (3+7-weekday(tgl)) DAY)
END as week_days
FROM absen
WHERE status = 'm'
GROUP BY id,week_days
这里是小提琴fiddle
查询说明: mysql工作日数组编号:
$weekArr = array(
'Monday' => 0,
'Tuesday' => 1,
'Wednesday' => 2,
'Thursday' => 3,
'Friday' => 4,
'Saturday' => 5,
'Sunday' => 6);
所以现在假设今天是星期二,日期是2016-01-12,现在让我们从今天开始计算我们的表格中的开始日期,即2016-01-07,它与过去一周的星期四相匹配,所以根据工作日的数组编号weekday(2016-01-07) == 3
,它会转到我们查询的WHEN
部分,查询会选择类似CASE WHEN (weekday('2016-01-07') <= 3) THEN date('2016-01-07' + INTERVAL(3-3))
的{{1}}和SELECT '2016-01-07'
等等。
答案 1 :(得分:-1)
我刚刚找到了如何使用WEEK('date'+ INTERVAL 3 DAY,3)
通过在Excel上进行故障排除来解决这个问题的方法