连帅帅 发表于 2021-3-16 14:45:49

sql中的max分析?

一个很简单的SQL需求,但是我有点不是很明白这个max在此处的意思,是取最大值吗?还是有别的用处呢?

-- 35、查询所有学生的课程及分数情况(重点)
SELECT st.s_id,st.s_name
,MAX(CASE WHEN co.c_name='语文' then sc.s_score else NULL END) as '语文'
,MAX(CASE WHEN co.c_name='数学' then sc.s_score else NULL END) as '数学'
,MAX(CASE WHEN co.c_name='英语' then sc.s_score else NULL END) as '英语'
FROM
student as st
LEFT JOIN
score as sc on st.s_id=sc.s_id
LEFT JOIN
course as co on sc.c_id=co.c_id
GROUP BY st.s_id,st.s_name

henkuderen 发表于 2021-3-16 15:38:49

假如你的分数表有三列:学生姓名 科目 分数,有这么3行数据
小明 数学 99
小明 语文 66
小明 英语 33
使用CASE WHEN进行条件筛选时,使得行转为列,会变成
            语文   数学   英语
小明      NULL    99      NULL
小明      66      NULL    NULL
小明      NULL    NULL       33
此时对分数求MAX,就可以把有数据的列取出来,再通过group by将小明的各科目成绩整合为一行,最终做到如下效果
            语文   数学   英语
小明      66         99      33

连帅帅 发表于 2021-3-17 18:01:55

henkuderen 发表于 2021-3-16 15:38
假如你的分数表有三列:学生姓名 科目 分数,有这么3行数据
小明 数学 99
小明 语文 66


明白了,之前一直被蒙蔽了好久,舒服了,感谢{:9_228:}
页: [1]
查看完整版本: sql中的max分析?