SQL汇总统计与GROUP BY过滤查询实现

作者:黑码哥 时间:2024-01-22 20:21:43 

1、汇总统计

介绍几个聚集函数

SQL汇总统计与GROUP BY过滤查询实现

有多少名学生

SELECT COUNT(*) FROM student;

SELECT COUNT(1) FROM student;

SELECT COUNT(score) FROM student;

所有学生的成绩总和

SELECT SUM(score) FROM student;

所有学生成绩的最高分

SELECT MAX(score) FROM student;

所有学生成绩最低分

SELECT MIN(score) FROM student;

所有学生成绩平均分

SELECT AVG(score) FROM student;

2、GROUT BY

如何获取每个班级的数学成绩平均分(因为学生太多,这里先不计算

成绩在80分以下的学生),以便比较不同班级的成绩?

SELECT class_id, AVG(score)
FROM student
WHERE score > 80
GROUP BY class_id

汇总原理如下:

SQL汇总统计与GROUP BY过滤查询实现

如何统计不同的交易所的总的买入金额?

SELECT LEFT(stock_code,2), SUM(price * volume)
FROM t_stock_trans_dtl
WHERE opt_typ = '买入'
GROUP BY LEFT(stock_code,2)

如何统计不同的交易所的不同交易类型的总的交易金额?

SELECT LEFT(stock_code,2), opt_typ, SUM(price * volume)
FROM t_stock_trans_dtl
GROUP BY LEFT(stock_code,2), opt_typ

SELECT里除了使用聚集函数返回的字段外,其他所有的字段都必须原样出现在GROUP BY的 后面;

GROUP BY会将NULL值的行,分到同一组计算统计值:

SELECT teacher_id, COUNT(*)
FROM student
GROUP BY teacher_id

SQL汇总统计与GROUP BY过滤查询实现

3、如何对分组统计的结果进行过滤

GROUP BY + HAVING

如何获取教授15名以上学名的老师?

使用关键字:GROUP BY + HAVING

SELECT teacher_id, COUNT(*)
FROM student
GROUP BY teacher_id
HAVING COUNT(*) > 15

如何获取数学成绩平均分在70分及以上的班级?

SELECT class_id, AVG(score)
FROM student
GROUP BY class_id
HAVING AVG(score) > 70;

如何获取每个班级的成绩平均分(不计算成绩在80分以下的学

生且过滤掉平均分在90分以下的班级),以便比较不同班级的成绩?

SELECT class_id, AVG(score)
FROM student
WHERE score > 80
GROUP BY class_id
HAVING AVG(score) > 90;

SQL汇总统计与GROUP BY过滤查询实现

4、如何对分组统计的结果进行排序

GROUP BY + ORDER BY

如何获取每个班级的数学成绩平均分(不计算成绩在80分以下的学

生),然后以平均分从高到低排序?

SELECT class_id, AVG(score)
FROM student
WHERE score > 80
GROUP BY class_id
ORDER BY AVG(score) DESC

SQL汇总统计与GROUP BY过滤查询实现

5、介绍SELECT语句中各个子句的书写顺序

如何获取每个班级的数学成绩平均分(不计算成绩在80分以下的学

生且过滤掉平均分在90分以下的班级),然后以平均分从高到低排序?

SELECT class_id, AVG(score)
FROM student
WHERE score > 80
GROUP BY class_id
HAVING AVG(score) > 90
ORDER BY AVG(score) DESC

SQL汇总统计与GROUP BY过滤查询实现

6、上方用到的表

学生表

SQL汇总统计与GROUP BY过滤查询实现

交易表

SQL汇总统计与GROUP BY过滤查询实现

来源:https://liyunxiang.blog.csdn.net/article/details/128150913

标签:SQL,汇总统计,GROUP,BY
0
投稿

猜你喜欢

  • Python实现简单的列表冒泡排序和反转列表操作示例

    2022-10-18 08:46:04
  • Python实现自定义读写分离代码实例

    2023-04-19 14:34:57
  • CSS3的五个使用技巧[译]

    2009-02-19 13:01:00
  • python实现电子词典

    2021-12-19 08:29:03
  • Python项目文件中安装 setup.py的步骤

    2023-10-24 15:06:01
  • python怎么判断素数

    2021-09-30 11:10:33
  • MYSQL的binary解决mysql数据大小写敏感问题的方法

    2024-01-25 16:38:26
  • Python Django实现layui风格+django分页功能的例子

    2023-10-07 00:04:28
  • Python使用pandas和xlsxwriter读写xlsx文件的方法示例

    2022-05-14 00:35:25
  • Python使用 OpenCV 进行图像投影变换

    2021-09-10 03:08:19
  • PHP实现PDF转图片的详细过程(使用imagick)

    2023-09-07 13:27:34
  • CentOS 7中安装mysql server的步骤分享

    2024-01-20 13:33:56
  • oracle增加表空间大小两种实现方法

    2024-01-15 14:34:12
  • 使用golang编写一个并发工作队列

    2023-09-02 20:54:08
  • 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等

    2011-12-01 07:53:11
  • Zen Coding: 一种快速编写HTML/CSS代码[译]

    2009-12-16 12:53:00
  • Python中如何替换字典中的值

    2022-10-04 21:21:35
  • Python如何配置环境变量详解

    2021-11-20 08:18:21
  • oracle单库彻底删除干净的执行步骤

    2024-01-21 13:01:05
  • MySQL定时任务(EVENT事件)如何配置详解

    2024-01-19 08:04:12
  • asp之家 网络编程 m.aspxhome.com