每周统计数据的{s}查询错误

时间:2018-03-03 09:28:57

标签: php sql mysqli

我正在尝试为用户注册制作每周统计信息。它应该每周工作。一周总共七天。我想在屏幕上打印一周中每天注册的用户数。

例如:

  

周一注册的用户数量= 38

     

周二注册的用户数量= 11

     

.... .... 此列表仅列出我们

的那一周

我创建了一个类似以下的SQL查询:

SELECT WEEKDAY(registerTime)+1, count(*) 
FROM users group by WEEKDAY(registerTime) 
ORDER BY WEEKDAY(registerTime)

但这个问题的结果却截然不同。此总数显示每周一在星期一注册的用户数。

3 个答案:

答案 0 :(得分:3)

您希望仅将用户限制在本周,因此您无法获得所有内容:

SELECT WEEKDAY(registerTime)+1, count(*) 
FROM users
WHERE WEEKOFYEAR(registerTime) = WEEKOFYEAR(CURDATE()) 
     AND YEAR(registerTime) = YEAR(CURDATE())
group by WEEKDAY(registerTime)
ORDER BY WEEKDAY(registerTime);

基本上,您将年份和年份与您所需的一致。那应该够了。

答案 1 :(得分:1)

您也可以使用Php代码来实现此目的。首先制作数天,然后通过array每天都可以获得注册用户

function today()
{
    return date("Y-m-d");

}
function last_seventh_day()
{
    return date("Y-m-d",strtotime("-7 days"));

}

$days = ['Saturday','Sunday','Monday','Tuesday','Wednesday','Thursday','Friday'];//Array that stores all days



foreach($days as $day)
    {
        $sql = "select * FROM users where day = '$day'  and date_column between " .today() . "and" .last_seventh_day() ;
    }

我已经更新了我的答案。我希望这对你有用!

答案 2 :(得分:1)

试试这样:

SELECT datepart(week, registerTime), count(*) FROM Users GROUP BY datepart(week, registerTime)