在MySQL中获得一天、七天和三十天的计数

在MySQL中获得一天、七天和三十天的计数,mysql,count,Mysql,Count,我想知道是否可以进行如下查询: SELECT COUNT(DISTINCT `User`) FROM `test_table` WHERE `createdDate` >= now() - INTERVAL 1 DAY AS Day && SELECT COUNT(DISTINCT `User`) FROM `test_table` WHERE `createdDate` >= now() - INTERVAL 7 DAY AS Week && SEL

我想知道是否可以进行如下查询:

SELECT COUNT(DISTINCT `User`) FROM `test_table` WHERE `createdDate` >= now() - INTERVAL 1 DAY AS Day
&&
SELECT COUNT(DISTINCT `User`) FROM `test_table` WHERE `createdDate` >= now() - INTERVAL 7 DAY AS Week
&&
SELECT COUNT(DISTINCT `User`) FROM `test_table` WHERE `createdDate` >= now() - INTERVAL 30 DAY AS Month
理想情况下,查询将返回过去一个月/周/天内创建的用户数量。

只需使用DATE\u SUB(现在(),间隔1天)

只需使用DATE_SUB(NOW(),间隔1天)



你想获得所有在过去一个月/周/日注册的用户吗?不,我只想计算过去一天/周/月注册的用户,比如今天4个,本周15个,本月230个。为什么在查询之间使用
?为什么不将它们作为3个单独的查询?您的
test\u表是否包含重复的用户记录?您想获取过去一个月/周/日注册的所有用户?不,我只想计算过去一天/周/月注册的用户,今天4个,本周15个,230这个月为什么在查询之间使用
?为什么不将它们作为3个独立的查询?您的
test\u表是否包含重复的用户记录?这非常有效!是否可以包括以下内容:选择日期(
createdDate
)周以获取用户注册的日期?是。只是:选择COUNT(DISTINCT
User
)作为dailyUser,从
test\u表中创建日期,其中
createdDate
=DATE\u SUB(NOW(),INTERVAL 1 DAY)我的意思是这样的:选择日期(
createdDate
)月份,计数(DISTINCT
User
)从
test\u表中计数
是的,但createdDate已经是一个日期时间字段,或者?或者你不想在没有时间的情况下得到日期?这太好了!是否可以包括以下内容:选择日期(
createdDate
)周以获取用户注册的日期?是。只是:选择COUNT(DISTINCT
User
)作为dailyUser,从
test\u表中创建日期,其中
createdDate
=DATE\u SUB(NOW(),INTERVAL 1 DAY)我的意思是这样的:选择日期(
createdDate
)月份,计数(DISTINCT
User
)从
test\u表中计数
是的,但createdDate已经是一个日期时间字段,或者?或者您想只获取没有时间的日期?请检查此查询@FilipBusicWorks fine,但它不会返回创建用户的日期。。例如,(星期一==4个用户,星期二==2个用户)等等。基本上,我试图将这些值放在一个图表中,因此我需要获得所有这些值的每日/每周/每月+日期,这样我就可以轻松地显示您要求的上一天、最后七天和最后三十天用户摘要的数据。此特定查询始终返回一行三列(
最后一天
最后七天
最后三十天
已创建用户计数)。请检查此查询@FilipBusicWorks fine,但它不返回创建用户的日期。。例如,(星期一==4个用户,星期二==2个用户)等等。基本上,我试图将这些值放在一个图表中,因此我需要获得所有这些值的每日/每周/每月+日期,这样我就可以轻松地显示您要求的上一天、最后七天和最后三十天用户摘要的数据。此特定查询始终返回一行三列(
最后一天
最后七天
最后三十天
创建的用户计数)。
SELECT COUNT(DISTINCT `User`) as dailyUser FROM `test_table` WHERE `createdDate` >= DATE_SUB(NOW(), INTERVAL 1 DAY)

SELECT COUNT(DISTINCT `User`) as weeklyUser FROM `test_table` WHERE `createdDate` >= DATE_SUB(NOW(), INTERVAL 1 WEEK)

SELECT COUNT(DISTINCT `User`) as monthlyUser FROM `test_table` WHERE `createdDate` >= DATE_SUB(NOW(), INTERVAL 1 MONTH)
SELECT 
IFNULL(SUM(CASE WHEN `createdDate` >= CURDATE() - INTERVAL 1 DAY THEN 1 ELSE 0 END),'0') AS 'LastDay',
IFNULL(SUM(CASE WHEN `createdDate` >= CURDATE() - INTERVAL 7 DAY THEN 1 ELSE 0 END),'0') AS 'LastSevenDays',
IFNULL(SUM(CASE WHEN `createdDate` >= CURDATE() - INTERVAL 30 DAY THEN 1 ELSE 0 END),'0') AS 'LastThirtyDays'
FROM 
test_table
WHERE `createdDate` >= CURDATE() - INTERVAL 30 DAY;