Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 关系表上的SQL平均用户值_Mysql_Sql - Fatal编程技术网

Mysql 关系表上的SQL平均用户值

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`

我们的产品有“免费”试用期。并且想要获得给定时间段内的平均用户值,一些用户在免费试用和注册我们的订阅后不进行扩展

表用户(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` 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除以用户数量请立即检查