发表于: 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要不要重新 换种方式,有可能是我的思考方式错了
遇到的问题:
收获:
评论