Mysql SQL-两个日期之间的条件
我有一个包含3列的表: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
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日开始)太棒了!非常感谢你,耶!