如何按星期从星期五开始分组

时间:2016-01-11 10:06:53

标签: mysql

我有这样的表sql:

column id and tanggal is primary key

这是我对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是星期四。

2 个答案:

答案 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上进行故障排除来解决这个问题的方法