[英]MySQL distinct and average
以下结构是如何设想这个查询。
user_info
- id int(11)
- email varchar(255)
- regdate int(11)
statistics
- id int(11)
- playerid int(11)
- timetopay int(11)
我想要做的就是从 user_info 获取所有唯一的电子邮件,然后在同一个查询中获取 statistics.timetopay-user_info.regdate 的平均值。
SELECT AVG(s.timetopay-ui.regdate) as time_amount FROM user_info ui
LEFT JOIN statistics s ON ui.id=s.playerid
WHERE s.timetopay>'0' GROUP BY ui.email ORDER BY ui.id DESC LIMIT 1
希望从上面的片段中你能明白要点。 我只是想算出用户支付一些钱所需的平均时间,但前提是他们有。
上面的查询目前对我来说不太适用。
我不得不使用 ui.email 组,因为用户可以拥有多个帐户。 任何人都知道我如何在一个查询中实现这一目标?
这是你要找的吗?
select avg(daystakenavg) from (
select avg(s.timetopay - u.regdate) as daystakenavg
from user_info u
join statistics s on (u.id = s.playerid)
group by email
) t
请注意,如果用户尚未购买,则不会显示在结果中。 如果您希望将其更改为左连接并添加coalesce
以默认为您想要的任何值:
select avg(daystakenavg) totaldaystakenavg from (
select coalesce(avg(s.timetopay - u.regdate), 0) as daystakenavg
from user_info u
left join statistics s on (u.id = s.playerid)
group by email
) t
此外,我不建议使用整数作为日期......您应该使用一种日期数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.