网站制作 服务器 系统,wordpress category.php制作,网页版梦幻西游哪个职业厉害,PHP网站开发如何建立vip1. 1661求机器平均运行时间 在做这道题的时候#xff0c;我遇到了4个问题
# 求平均的问题 如何找到个数? - 相减对应列值后,直接average 就行。因为avg就是自动确定要除的个数#xff08;当然要联合正确的group by 分组#xff09;
# 怎么根据machine_id和process_id…1. 1661求机器平均运行时间 在做这道题的时候我遇到了4个问题
# 求平均的问题 如何找到个数? - 相减对应列值后,直接average 就行。因为avg就是自动确定要除的个数当然要联合正确的group by 分组
# 怎么根据machine_id和process_id 去匹配 - 自联结
# start 和 end 如何确定 - 自联结指定
# group by 分组 如果没有加分组可能就不对。什么时候要加分组呢聚合函数avgsumcount的时候都“应该”加。还有就是需要根据xx分组。筛选出每个唯一的值并根据这些唯一的值进行查询 2 577员工奖金
这是一个很简单的连表查询要求找出奖金小于1000元的员工姓名和金额。
于是我最开始这样写
select e.name,b.bonus from Employee e left join Bonus b on e.empId b.empId
where b.bonus 1000
但显示不对。我发现答案里面有null说明在Bonus中的bonus有可能是null也就是没有这条数据。那么就需要加上判断是否是null。
select e.name,b.bonus from Employee e left join Bonus b on e.empId b.empId
where b.bonus is null or b.bonus 1000 3 1280.学生们参加各科测试的次数
这个题目我写了好几遍。
第一次尝试没有写出来看了提解启发思路再写不对 select a.student_id student_id,a.student_name ,b.subject_name ,count(b.subject_name)attended_exams from Students a right join Examinations c on a.student_id c.student_id left join Subjects b on b.subject_name c.subject_name group by a.student_id,a.student_name ,b.subject_name order by a.student_id,b.subject_name 第二次尝试不对 select a.student_id ,a.student_name ,b.subject_name ,count(b.subject_name)attended_exams from Students a join Subjects b left join Examinations c on a.student_id c.student_id and b.subject_name c.subject_name group by a.student_id,a.student_name order by a.student_id,b.subject_name 第三次尝试不对 select a.student_id ,a.student_name ,b.subject_name ,count(b.subject_name)attended_exams from Students a join Subjects b left join Examinations c on a.student_id c.student_id and b.subject_name c.subject_name group by a.student_id, c.subject_name order by a.student_id,b.subject_name 最后一次比对提解逐帧查看问题出在哪里 select a.student_id ,a.student_name ,b.subject_name ,count(c.subject_name)attended_exams from Students a join Subjects b left join Examinations c on a.student_id c.student_id and b.subject_name c.subject_name group by a.student_id, a.student_name,b.subject_name order by a.student_id,b.subject_name # 问题1 考试次数 0 的没有罗列出来 - 我换个表连接方向,但好像还是不行唉。后来发现是分组和count列的问题。
# 问题2 分组条件 我选学生名 学生id 这不对的。
# 问题3 分组条件 我选择 考试表的subject_name也是不对的。
正确做法应该根据科目表的subject_name分组不然就没有考试表次数为0的记录。
# 问题4 count的时候要去count考试表里的subject_name。
看来分组条件不是随便选的要起到唯一性如果分组条件不唯一可能会导致查询结果的重复或错误。而count的列名也不是随便选的
4. 570.至少有5名直接下属的经理
最开始我这样写 select t.name from (select e1.name as name,count(e2.managerId) from Employee e1,Employee e2 where e1.id e2.managerId group by e1.name having count(e2.managerId) 4 ) t 我点击运行看通过了测试用例就开心大吉了。 但是当我点击提交的时候提示我解答错误没有通过全部的测试用例。 这里我没有仔细看我以为是没有去重于是我这样写 select distinct t.name from (select e1.name as name,count(e2.managerId) from Employee e1,Employee e2 where e1.id e2.managerId group by e1.name having count(e2.managerId) 4 ) t 发现还是不对点开源码我才明白我上面写的SQL无法解决重名的问题 因此需要去掉distinct以及在分组的时候不要根据姓名name分组而是要根据主键id去分组。 select t.name from (select e1.name as name,count(e2.managerId) from Employee e1,Employee e2 where e1.id e2.managerId group by e1.id having count(e2.managerId) 4 ) t 5.1934 确认率
在写这道题的时候我想到了以下问题
# 联表时候 怎么 自联结因为我想需要找出“确认”的个数。-后面发现直接用if(条件10)这样就可以实现这个效果。而总个数直接count(c.action)就可以。
# 怎么确认 timeout 和 confirmed 的个数count什么呢- 同上。
# sum 怎么统计 action里 为 某个值的 个数 sum()注意要group by 要准确的条件。 select s.user_id,ifnull((sum(if(c.action confirmed,1,0)) / count(c.action)),0) as confirmation_rate from Signups s left join Confirmations c on s.user_id c.user_id group by c.user_id 最后的ifnull 是因为这里提示要为0. 但是这样写有个问题# 如果c.action 没有记录怎么办 -用avg select s.user_id,round(ifnull(avg(c.action confirmed),0),2) as confirmation_rate from Signups s left join Confirmations c on s.user_id c.user_id group by c.user_id 这里为啥avg(c.action confirmed)就能计算出平均成功率是多少呢我没太理解