Mysql 关系表上的SQL平均用户值
我们的产品有“免费”试用期。并且想要获得给定时间段内的平均用户值,一些用户在免费试用和注册我们的订阅后不进行扩展 表用户(id、用户名、创建时间…)事务(id、用户id、金额、创建时间…) 我需要所有用户的平均值(不仅仅是那些有交易关系的用户) 我愚蠢的尝试Mysql 关系表上的SQL平均用户值,mysql,sql,Mysql,Sql,我们的产品有“免费”试用期。并且想要获得给定时间段内的平均用户值,一些用户在免费试用和注册我们的订阅后不进行扩展 表用户(id、用户名、创建时间…)事务(id、用户id、金额、创建时间…) 我需要所有用户的平均值(不仅仅是那些有交易关系的用户) 我愚蠢的尝试 SELECT avg(total) FROM ( SELECT u.id AS user_id, t.id, SUM(t.amount)/100 AS total FROM users u LEFT JOIN `transactions`
SELECT avg(total)
FROM (
SELECT u.id AS user_id, t.id, SUM(t.amount)/100 AS total
FROM users u
LEFT JOIN `transactions` t ON t.user_id = u.id AND (t.status='captured')
WHERE DATE(u.created) >= '2020-01-01'
GROUP BY t.id
) t
免费线索尚未有交易。。并且已经订阅的用户可以有多个交易(每月一个)
我想要的输出是
user_count transaction_amount avg
200 3950 19,75
您可以使用
左连接和聚合,如下所示:
SELECT count(distinct u.id) AS user_id, count(t.id) as num_transaction,
count(t.id)/count(distinct u.id) as avg_,
SUM(t.amount)/count(distinct u.id) as sum_divided_by_users
FROM users u
LEFT JOIN `transactions` t ON t.user_id = u.id
WHERE DATE(u.created) >= '2020-01-01'
很酷-类似这样-但我需要交易总数.amount除以用户数量请立即检查