当前位置:   article > 正文

sql分组查询

sql分组查询

一、根据班级分类对不同的学生的各科成绩与总成绩进行校验。

首先数据表信息如下:
在这里插入图片描述
这里有三个学生,语文,数学,英语的成绩都是100,所以他们的总成绩是300,这里我们就是要根据班级分组然后验学科总成绩各学科成绩累加是否相等

首先按照学号与班级号进行分组,然后sum各科分数与去重的总分数求和

SELECT
	s_no,
	course_no,
	sum( score ) score,
	sum( DISTINCT total_score ) total_score 
FROM
	`stu` 
GROUP BY
	s_no,
	course_no
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

然后得到
在这里插入图片描述

根据观察得到班级号还要重复,然后再进行分组求和

SELECT
	sum( score ) score,
	sum( total_score ) total_score,
	course_no 
FROM
	( SELECT s_no, course_no, sum( score ) score, sum( DISTINCT total_score ) total_score FROM `stu` GROUP BY s_no, course_no ) t 
GROUP BY
	course_no
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

就会得到:
在这里插入图片描述
各科分数(score)与总分数(total_score)都是一样的说明是正确的。
现在修改王五的分数。
在这里插入图片描述
再执行

在这里插入图片描述
2班的各科分数(score)与总分数(total_score)不一样,说明2班的成绩有问题。

二、按专业成绩进行校验

如图所示,要校验专业总成绩和班级总成绩。
在这里插入图片描述
数据库表数据
在这里插入图片描述

首先对专业总成绩根据班级和学号,专业进行分组,然后去重总成绩,而班级总成绩按照班级号和专业分组然后去重即可。
求专业总成绩。

 SELECT sum( DISTINCT major_score ) major_score, major FROM stu GROUP BY major
  • 1

在这里插入图片描述

然后分组求班级总成绩。

SELECT
		sum( class_score ) class_score,
		major 
	FROM
		( SELECT sum( DISTINCT class_score ) class_score, major, class_no FROM stu GROUP BY major, class_no ) tmp 
	GROUP BY
		major 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

然后再进行连表。

SELECT
	t1.major_score,
	t2.class_score,
	t1.major 
FROM
	( SELECT sum( DISTINCT major_score ) major_score, major FROM stu GROUP BY major ) t1,
	(
	SELECT
		sum( class_score ) class_score,
		major 
	FROM
		( SELECT sum( DISTINCT class_score ) class_score, major, class_no FROM stu GROUP BY major, class_no ) tmp 
	GROUP BY
		major 
	) t2 
WHERE
	t1.major = t2.major
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述
专业分数和班级分数和一致,说明数据没问题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/410713
推荐阅读
相关标签
  

闽ICP备14008679号