发表于: 2017-05-08 23:02:09

1 1256


今天完成的事情:

1.  和前端对接口,出现一些问题,我认为是sql过于复杂导致结果出错。

以下是统计完成职业的所有的人的平均天数,内门、外门、散修方法是类似的,但是由于数据量太少,看不出有没有错。

.全部完成职业平均天数

UPDATE occupation o

INNER JOIN

(

SELECT 

utr.oid,

ROUND((SUM(utr.judge_at - utr.receive_at))/COUNT(DISTINCT(u.id))/1000/86400,1) AS '全部完成职业平均天数'

FROM `user` u

LEFT JOIN user_task_relation utr ON u.id = utr.uid

WHERE u.type IN ('online','offline','outline')

AND utr.uid IN

(

#完成职业的所有uid,通过查询完成每个职业的最后一个任务的uid得到完成职业的所有uid

SELECT uid

FROM   user_task_relation utr

LEFT JOIN  task t ON utr.tid = t.id

WHERE 1> (SELECT count(id) FROM task b WHERE b.oid = t.oid AND b.num > t.num )

AND utr.progress = 5

)

GROUP BY utr.oid

) a 

ON o.id = a.oid

SET o.average_time_total = a.`全部完成职业平均天数`


标黄色的会先执行,通过查询一个职业的最后一个任务的完成的用户id,得到这些用户id的完成所有任务的天数的和,再求平均值。


但是查看数据库的数据发现并非是理想的情况,其中出现的错误也无从查找。对于以后的这些sql的维护也是很担心。


不知道到底该用什么样的方式来解决。


2.  和前端沟通了我的技能数里面的skill,需要添加一个parent_id,但是并不好理解,明天需要看看接口是怎么写的。


3. 晚上看会mysql必知必会


明天计划的事情:

1. 和前端调试数据,现在只有一个数据有问题了,明天解决。

2. 看看sql要不要重新 换种方式,有可能是我的思考方式错了

遇到的问题:


收获:



返回列表 返回列表
评论

    分享到