繁体   English   中英

MySQL 不同和平均

[英]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.

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