gpt4 book ai didi

mysql - 如何使用 mysql 创建每月队列分析表?

转载 作者:行者123 更新时间:2023-11-29 18:08:41 25 4
gpt4 key购买 nike

我有一个针对每月用户的保留查询,我在其中编写了与 Weekly Cohort analysis Mysql 类似的查询。

查询工作正常并且输出正确,我只需要更改列中的日期格式

查询适用于两个表

设备信息和 session 表,

deviceinfo表有id(id)、device_id(unique deviceid)和created_at(datetime)

session 表有id( session 表的id),deviceid(deviceid指的是deviceinfo id)和start_time(日期时间)

 SELECT STR_TO_DATE(CONCAT(tb.cohort), '%Y-%m-%d') as date,
m1,
m2,
m3,
m4
FROM
(SELECT u.cohort, IFNULL(SUM(s.Offset = 0), 0) m1,
IFNULL(SUM(s.Offset = 1), 0) m2,
IFNULL(SUM(s.Offset = 2), 0) m3,
IFNULL(SUM(s.Offset = 3), 0) m4
FROM
(SELECT id, DATE_FORMAT(created_at, '%Y-%m') AS cohort FROM deviceinfo
WHERE created_at BETWEEN '2017-09-01' AND '2017-11-30' ) as u
LEFT JOIN
(SELECT DISTINCT sessions.deviceid, FLOOR(DATEDIFF(sessions.start_time,
deviceinfo.created_at)/30) AS Offset
FROM sessions
LEFT JOIN deviceinfo ON (deviceinfo.id = sessions.deviceid)WHERE
sessions.start_time BETWEEN '2017-09-01' AND '2017-11-30' ) as s
ON s.deviceid = u.id GROUP BY u.cohort ) as tb
LEFT JOIN ( SELECT DATE_FORMAT(created_at, '%Y-%m-%d') dt,
COUNT(*) size FROM deviceinfo GROUP BY dt ) size ON tb.cohort = size.dt

我的查询结果是

date               m1    m2    m3  

2017-09-00 6 3 0

2017-09-00 6 0 0

2017-09-00 32 0 0

但是我的预期结果是

date            m1    m2    m3  

2017-09-01 6 3 0

2017-09-01 6 0 0

2017-09-01 32 0 0

我知道这是 Mysql 中的基本内容,因为我是新手,对此感到震惊,任何帮助都会有用 预先感谢您

最佳答案

您可以使用ADDDATE mysql函数来实现这一点。

示例代码

mysql> SELECT ADDDATE('2017-09-00', 1);
-> '2017-09-01'

引用Documentation此处了解有关该功能的更多信息。

关于mysql - 如何使用 mysql 创建每月队列分析表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47586758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com