Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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查询,根据表中的一些数据查找平均值_Mysql - Fatal编程技术网

MySQL查询,根据表中的一些数据查找平均值

MySQL查询,根据表中的一些数据查找平均值,mysql,Mysql,我有一个表,其中包括DateGranded、beltcolor和users id userid字段 beltcolor为“varchar”,DateDewarded为“date”,userid为int 这些数据代表了学生获得各种色带巴西柔术的日期 我想确定的是皮带之间的平均时间/在给定皮带上花费的平均时间 因为紫色在蓝色之后,如果我想知道花在蓝色上的平均时间,我想我需要做的是: 对于每个有紫色腰带的用户id,并不是所有的用户都有紫色腰带,记下蓝色腰带被授予的日期和紫色腰带被授予的日期,并计算它们

我有一个表,其中包括DateGranded、beltcolor和users id userid字段

beltcolor为“varchar”,DateDewarded为“date”,userid为int

这些数据代表了学生获得各种色带巴西柔术的日期

我想确定的是皮带之间的平均时间/在给定皮带上花费的平均时间

因为紫色在蓝色之后,如果我想知道花在蓝色上的平均时间,我想我需要做的是:

对于每个有紫色腰带的用户id,并不是所有的用户都有紫色腰带,记下蓝色腰带被授予的日期和紫色腰带被授予的日期,并计算它们之间的时间。将所有时间加起来,除以发现到达紫带的人数

你能帮我做一个SQL查询吗

谢谢!
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