有一张学生信息表Student,表里的信息包括学生姓名、学生性别、学生年龄、所在班级;现在想要根据学生姓名里的姓氏分组查询统计每个姓氏的学生个数。
1.根据学生姓名里的姓氏分组查询,首先要从姓名里截取姓氏再分组查询,group by是否支持先截取字段值再分组查询?
2.如果group by支持先截取姓名里的姓氏再分组查询,那面对班上学生的姓名既有单姓又存在复姓的情况,如何实现截取姓氏再分组查询,如学生姓氏既有关、张、赵、马、黄,又存在欧阳这样的复姓。
select substr(学生姓名, 0, 1) as 学生姓氏, count(1) from 学生表 group by 学生姓氏
1、设计时表结构将姓氏与名字拆分保存
2、考虑使用视图,姓氏通过字典表精确拆分(可自定义函数)形成视图