每周统计信息的SQL查询错误

问题描述 投票:3回答:3

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

例如:

周一注册的用户数= 38

周二注册的用户数= 11

.... ....这个清单只列出我们的那一周

我创建了一个SQL查询,如下所示:

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

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

php sql mysqli
3个回答
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
投票

试试这样:

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

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() ;
    }

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

© www.soinside.com 2019 - 2024. All rights reserved.