MySQL查询,根据表中的一些数据查找平均值
我有一个表,其中包括DateGranded、beltcolor和users id userid字段 beltcolor为“varchar”,DateDewarded为“date”,userid为int 这些数据代表了学生获得各种色带巴西柔术的日期 我想确定的是皮带之间的平均时间/在给定皮带上花费的平均时间 因为紫色在蓝色之后,如果我想知道花在蓝色上的平均时间,我想我需要做的是: 对于每个有紫色腰带的用户id,并不是所有的用户都有紫色腰带,记下蓝色腰带被授予的日期和紫色腰带被授予的日期,并计算它们之间的时间。将所有时间加起来,除以发现到达紫带的人数 你能帮我做一个SQL查询吗 谢谢!MySQL查询,根据表中的一些数据查找平均值,mysql,Mysql,我有一个表,其中包括DateGranded、beltcolor和users id userid字段 beltcolor为“varchar”,DateDewarded为“date”,userid为int 这些数据代表了学生获得各种色带巴西柔术的日期 我想确定的是皮带之间的平均时间/在给定皮带上花费的平均时间 因为紫色在蓝色之后,如果我想知道花在蓝色上的平均时间,我想我需要做的是: 对于每个有紫色腰带的用户id,并不是所有的用户都有紫色腰带,记下蓝色腰带被授予的日期和紫色腰带被授予的日期,并计算它们
Sean这是一个查询,用于找出紫色和蓝色之间的平均天数。您可以使其适应其他情况:
SELECT AVG(datediff(a.dateawarded,b.dateawarded)) as Average
FROM beltsTable a
INNER JOIN beltsTable b ON a.userid = b.userid
WHERE a.beltcolor = "purple" AND b.beltcolor = "blue"
这将只考虑使用两条皮带的用户。如果用户只有一条蓝色腰带,则不会考虑它。首先,您应该找到当前腰带的上一条腰带日期,请参见内部查询,然后计算每个腰带颜色的当前日期和上一条腰带之间的平均天数
select beltcolor,
FLOOR(AVG(DATEDIFF(dateawarded,Prev_dateawarded))) as Days_to_reach
from
(
select beltcolor,dateawarded,id,
COALESCE((select MAX(dateawarded) from T
where id=T1.id
and dateawarded<T1.dateawarded)
,dateawarded)
as Prev_dateawarded
from T as T1
) As T2
group by beltcolor