繁体   English   中英

计算返回数字的两个不同 SQL 查询结果的比率

[英]Calculate Ratio of two different SQL queries result that return numbers

我有问题 1

SELECT COUNT(DISTINCT user_id) total_daily_active_user_group_month FROM (SELECT  user_id , MONTHNAME(time) mon , COUNT(*) cnt FROM ACTIVITIES 
WHERE  MONTH(time) = MONTH(NOW() - INTERVAL 1 MONTH) GROUP by user_id, MONTH(time) ) as x 

返回 18

查询 2

SELECT COUNT(DISTINCT user_id) total_daily_active_user_group_month FROM (SELECT  user_id , MONTHNAME(time) mon , COUNT(*) cnt FROM ACTIVITIES 
WHERE  MONTH(time) = MONTH(NOW() - INTERVAL 1 MONTH) GROUP by user_id, MONTH(time) having cnt=31) as x 

返回 6

我想要查询1和2的比率。 方法

18/6。 我正在使用 MySQL

如果您将这两个查询都用作 CTE,那么它变得相对简单:

WITH q1
     AS (SELECT Count(DISTINCT user_id) total_daily_active_user_group_month
         FROM   (SELECT user_id,
                        Monthname(TIME) mon,
                        Count(*)        cnt
                 FROM   activities
                 WHERE  Month(TIME) = Month(Now() - interval 1 month)
                 GROUP  BY user_id,
                           Month(TIME))),
     q2
     AS (SELECT Count(DISTINCT user_id) total_daily_active_user_group_month
         FROM   (SELECT user_id,
                        Monthname(TIME) mon,
                        Count(*)        cnt
                 FROM   activities
                 WHERE  Month(TIME) = Month(Now() - interval 1 month)
                 GROUP  BY user_id,
                           Month(TIME)
                 HAVING cnt = 31))
SELECT q1.total_daily_active_user_group_month /
       q2.total_daily_active_user_group_month
       AS result
FROM   dual;  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM