准备

学生成绩表:student(
        name(学生姓名),
        grade(成绩),
        subject(学科)
       )
班级表:class(
        student_name(学生姓名),
        class_name(班级名称)
        )

数据库:postgresql
模式名:test(默认模式名为public)
对学生成绩表进行分表(student_0,student_1,student_2)

问题描述


1、使用group by 时,想要将各个分表查询结果进行归并,没有归并成功
        比如:
        --查询每个学生的总成绩
        --这个可以归并
        select count(grade),name from student group by name
        
        
        --查询每个学生的总成绩,并关联班级表,查询出所属班级
        --这个不能归并
        select s.*,c.class_name from (
            select count(grade),name from student group by name
        ) u left join class c on c.student_name = s.name
        
        --需要修改为以下才能进行归并
        select count(s.grade) grade,s.name,c.class_name from (
            select s.*,c.class_name from (
                select count(grade) grade,name from student group by name
            ) s left join class c on c.student_name = s.name
        ) al group by s.name,c.class_name
    
    
    
    2、报空指针异常
        是因为查询时,表名前面没有加模式名,这个应该是postgresql的特有的问题
        以上sql修改为
        select count(s.grade) grade,s.name,c.class_name from (
            select s.*,c.class_name from (
                select count(grade) grade,name from test.student group by name
            ) s left join class c on c.student_name = s.name
        ) al group by s.name,c.class_name
        

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐