gpt4 book ai didi

mysql - 使用 MySQL 中的子查询减去一周前的数据

转载 作者:行者123 更新时间:2023-11-29 13:07:29 24 4
gpt4 key购买 nike

我提取的一些数据如下:

select date_key, count(id) from table1 where date_key between x and y group by date_key;

我想获取一些其他数据,如下所示:

select date_key2, count(id) from table2 where date_key2 between x-7 days and y-7 days group by date_key2;

然后我想将一个除以另一个并得到结果。为此,我尝试了:

SELECT t1.date_key,
I.Converts,
I.Converts /(SELECT J.Starts FROM (SELECT t2.`date_key`,
count(id) AS Starts
FROM `table2` t2
WHERE date_key BETWEEN 20140225 AND 20140303
GROUP BY t2.`date_key`)J)
FROM
(
SELECT t1.`date_key`,
count(id) AS Converts
FROM `table` t1
WHERE date_key BETWEEN 20140304 AND 20140411
GROUP BY t1.`date_key`)I;

我收到“子查询返回超过 1 行”错误。当我单独运行它们时,即选择单独的部分并运行它们,它们运行良好,但一起运行时,它会崩溃。我究竟做错了什么?

最佳答案

为了让查询正常工作,您可能需要进行联接。基本上分别执行每个分组查询,然后在最后将它们连接在一起。

在接下来的查询中,我假设您想要计算每日转化率。例如,从第 1 天开始的用户有资格在第 8 天成为“转化者”。

SELECT I.date_key,
I.Converts,
I.Converts / J.`Starts`
FROM
(
SELECT t2.`date_key`,
count(id) AS `Starts`
FROM `table2` AS t2
WHERE date_key BETWEEN '2014-02-25' AND '2014-03-03'
GROUP BY t2.`date_key`
) AS J
JOIN
(
SELECT t1.`date_key`,
count(id) AS Converts
FROM `table` AS t1
WHERE date_key BETWEEN '2014-03-04' AND '2014-04-11'
GROUP BY t1.`date_key`
) AS I
ON I.`date_key`=DATE_ADD(J.`date_key`, INTERVAL 7 DAY);

请注意底部应用的日期偏移。这告诉 SQL 将每个转换日期与 7 天前的开始日期连接起来。

关于mysql - 使用 MySQL 中的子查询减去一周前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517145/

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