Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-两个日期之间的条件_Mysql_Sql_Conditional Statements_Case_Active Users - Fatal编程技术网

Mysql SQL-两个日期之间的条件

Mysql SQL-两个日期之间的条件,mysql,sql,conditional-statements,case,active-users,Mysql,Sql,Conditional Statements,Case,Active Users,我有一个包含3列的表:user\u id,start\u date,cancellation\u date 我想得到4列: 日期,活动用户数,取消用户数,取消率 有没有关于如何编写此查询的想法 提前谢谢 如果将活动用户定义为取消日期为空,则查询如下 SELECT ( SELECT CURDATE() ) AS `DATE`, ( SELECT COUNT(*) FROM users WHERE cancellation_date IS NULL) AS `Number of active u

我有一个包含3列的表:
user\u id
start\u date
cancellation\u date

我想得到4列:
日期
活动用户数
取消用户数
取消率

有没有关于如何编写此查询的想法


提前谢谢

如果将活动用户定义为取消日期为空,则查询如下

SELECT 
( SELECT CURDATE() ) AS `DATE`,
( SELECT COUNT(*) FROM users WHERE cancellation_date IS NULL) AS `Number of active users`,
( SELECT COUNT(*) FROM users WHERE cancellation_date IS NOT NULL) AS `number of users who cancelled`,
( SELECT `number of users who cancelled` / (`Number of active users` + `number of users who cancelled`)) AS `cancellation rate`

在MySQL 8上测试,

以下是一种衡量新用户、取消用户、活动用户的方法:

SELECT  calendar_date,
        (SELECT COUNT(*) FROM users AS usr WHERE cal.calendar_date BETWEEN usr.start_date AND IFNULL(usr.cancellation_date, '3000-01-01')) AS active_users,
        (SELECT COUNT(*) FROM users AS usr WHERE usr.start_date = cal.calendar_date) AS new_users,
        (SELECT COUNT(*) FROM users AS usr WHERE usr.cancellation_date = cal.calendar_date) AS users_cancelled
FROM    my_calendar AS  cal

(假设您有包含所有日期的“我的日历”表)

请参阅@DavidRibert。。我建议你问一个新问题。除示例数据外,还显示了所需的结果。非常清楚每个列是如何定义的。嗨,谢谢!在这个查询中,我将只获取当前日期。有没有办法给我一份所有日期的清单?(假设从2020年1月1日开始)太棒了!非常感谢你,耶!