鱼C论坛

 找回密码
 立即注册
查看: 2601|回复: 6

这个问题我学了select语句之后还是不会,请问要怎么弄呀?

[复制链接]
发表于 2018-9-29 22:35:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个问题我学了select语句之后还是不会,请问要怎么弄呀?希望大家教教我,感激不尽。
微信图片.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-29 23:01:57 | 显示全部楼层
GROUP BY(school,age) HAVING COUNT(score)>=70/COUNT(studentnum)
分组+行级过滤
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-30 14:32:00 | 显示全部楼层
庚午 发表于 2018-9-29 23:01
GROUP BY(school,age) HAVING COUNT(score)>=70/COUNT(studentnum)
分组+行级过滤

您好!题目中说需要找到那个合格率最大的年龄段,可是我看不懂您的代码哪里体现了找最大?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-30 16:24:46 | 显示全部楼层
大家都出去玩了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-30 23:54:27 | 显示全部楼层
sunny霉神 发表于 2018-9-30 14:32
您好!题目中说需要找到那个合格率最大的年龄段,可是我看不懂您的代码哪里体现了找最大?

SELECT 语句自己填充就可以了,多试几遍~就会有收获的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-1 01:18:59 | 显示全部楼层
mysql> select a.school,a.age,a.pass from (select school,age,sum(score>=70)/count(*) as pass from students group by school,age) as a
    -> inner join (select school,max(pass) as mp from (select school,age,sum(score>=70)/count(*) as pass from students group by school,age) as a group by school) as b
    -> on (a.school=b.school and a.pass=b.mp);

我弄出来这个很复杂。。。不知道还有没有简单点的方法。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-2 16:27:03 | 显示全部楼层
sunny霉神 发表于 2018-10-1 01:18
我弄出来这个很复杂。。。不知道还有没有简单点的方法。。。

我觉得你这个已经很简单了,用连接实现,效率也不错

可以用cte语句简化一下,但实质一下。我用IN表示,实现了一下
我用cte语句表示一下:
with rn1 as(
select school,age,sum(score>=70)/count(1) as
  from students
group by school,age
)
select school,age,pass
  from rn1
where (school,pass) in (select school,max(pass) from rn1 group by school )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 06:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表