SQL引用同一个表的2个子查询结果进行相除

问题遇到的现象和发生背景

数据格式如下:

img

操作环境、软件版本等信息

sql

尝试过的解决方法

select
(SELECT COUNT(DISTINCT user_id) FROM 行为表_action WHERE behavior = 'pay' GROUP BY date)/
(SELECT COUNT(DISTINCT user_id) FROM 行为表_action GROUP BY date)

select
(SELECT date,COUNT(DISTINCT user_id) FROM 行为表_action WHERE behavior = 'pay' GROUP BY date)/
(SELECT date,COUNT(DISTINCT user_id) FROM 行为表_action GROUP BY date)

我想要达到的结果

将两个查询使用除法运算进行组合:

(查询1) / (查询2)

得到每天付费用户占活跃用户的比例。

【以下回答由 GPT 生成】

解决方案如下:

你可以将查询1和查询2的结果作为子查询,然后在外部查询中进行除法运算。

SELECT 
    t1.date,
    t1.pay_users / t2.active_users AS conversion_rate
FROM
    (SELECT 
        date,
        COUNT(DISTINCT user_id) AS pay_users
    FROM 
        行为表_action
    WHERE 
        behavior = 'pay'
    GROUP BY 
        date) AS t1
INNER JOIN
    (SELECT 
        date,
        COUNT(DISTINCT user_id) AS active_users
    FROM 
        行为表_action
    GROUP BY 
        date) AS t2
ON 
    t1.date = t2.date

这个查询会将每天的付费用户数量和活跃用户数量进行除法运算,得到每天付费用户占活跃用户的比例。结果会包括日期和比例两列。

请注意,这里我们使用了子查询来计算每天的付费用户和活跃用户数量,然后通过内连接将两个子查询结果合并,并在外部查询中进行除法运算。这样可以得到每天的付费用户占活跃用户的比例。

希望这个解决方案对你有帮助。如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^