热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sql求和语句_《从零学会SQL汇总分析》课后练习

练习一、汇总分析1、常见的几个函数及作用:每种汇总函数的实际操作语句如下:(1)count函数:count函数

练习一、汇总分析

1、常见的几个函数及作用:

5369314f575ffabff872226a426d1abe.png

每种汇总函数的实际操作语句如下:

(1)count函数:

ca7035fedfbb2d7bda18158eca4667a8.png

count函数加列名就可以求出这个列名有多少行,需要注意的是,如果本列中存在空值的话,那count函数会先去掉空值然后再计算,当列中有空值存在,而我们又想把空值也计算的话那就在count函数中加入星号(*),这样就能把空值计算进去。count函数的空值计算如下:

8b3942079ce913cd73356ba95154e86f.png
教师姓名中有空值,所以函数输出结果是3
891da6f4b2d1bcde5efbb099d206a4f0.png
在count函数输入*表示计算所有行,包括空值,所以输出结果为4

(2 )求和函数sum:

0eaeaa2852550320f20516f504dac4df.png

(3)平均值函数avg:

2142759faba2203e762558d346b95da3.png

(4)最大值函数max和最小值函数min:

ed58bd29557092dee6375b9c6ad13c9b.png

最后以一张图来说明这5个函数的注意事项:

dce2c164bb83095cf163244bf6771188.png

当count函数使用星号时表示对所有列名进行计算求值,求和函数(sum)及求平均值函数(avg)只能对数值类型的列进行计算,不是数值的话会报错,而其他的函数对所有类型的列都可以进行计算。

2、汇总练习:

a6e1ccb61c57e173d7191832bba1a136.png
b0ec60994f8561deb6c3390aa60666c3.png

练习二、分组及常见面试题:

1、分组group by:以学生表中的性别来分组做个例子,sql的语句如下:

55470f3b6115fc4412419e1cbd705e37.png

SQL的运行顺序如下:

6398814423ffb3de96086882263c1add.png

先运行途中蓝框中的子句,蓝框中的子句按照书写顺序运行,最后运行select子句。

2、面试习题解答如下:

6419133a06fa8f806f671d8294980a7e.png
2c649ced89fdd3e57b720c5313458be1.png
01cd8de6f66e843a4ed399374f196076.png

怎样判断一个题目是否需要分组分析?当题目中出现’每‘’各‘等词时表示需要分组计算。

练习三、对分组结果指定条件及面试练习:

1、对分组结果指定条件having:

258037f3136da05e04933cd90325e871.png
79be388e8f8b033a56d3e679e9756f76.png

SQL的运行顺序:

f75c445a479d29917952eaf7662aab9d.png

2、面试习题练习解答:

b90a5876c425da8d26bd7254fad79257.png
349c8a9c295d87efd6281533c4a98c33.png
68bb9ca6cae22d7fed65613ce5722b7d.png

练习四、计算每门课程的平均成绩且平均成绩大于等于80分:

如何使用SQL解决业务问题:

25796679cf2d74103bbff02a1e4a99dc.png
a1ae54a8d781606d3952c73d7a053188.png
035ab1ec923f3dfef4159e8f5fa2659c.png
a3655df7f3b7a5602d878845ae09fa44.png

练习五、对查询结果排序:

1、排序(order by):

b98d3804fb513dbda330d66e8d2b209a.png
d83b5de40e46a1196d7264ff77febcf0.png
07a2d84d27718815458bd5d58332cfcb.png
e6be98e2d1d2f89771eb350437febdd3.png

指定多个排序中按照从做往右顺序排序,如上图,先按照成绩升序的排序方式,当成绩出现一样时再按照课程号进行降序排序

9ac61ab899b0cff828649070c14784e9.png

当有空值排序的时候,空值都会排在最前面。

96f411ecaff9cad323bf23254f427aa5.png

当查询结果数据太大,而我们只需要看其中某些数据时,需要用到limit的语句。

2、面试习题解答:

ee1f63f7d9ab38cb6170bd0782b9fb2f.png
a256961a7dde2b7f953607809edf8166.png

练习六、SQL的报错类型:

f064eab7c07285001bdb52ec6bb87b19.png

对分组指定条件having使用select子句的别名系统会报错,因为having的子句在select子句之前运行,所以having不能使用select的别名。

2fba770ddc38bb7a8b7bd11acf8fdad0.png

在where中不能使用函数count函数,否则系统会报错。

最后附上老师的课后总结图片,这张SQL的运行顺序要牢记。

43475ed44658e328241417e4ea9674f7.png

SQLZOO的练习答案:

5eb4fa7ab110f64bef9c4e224aabd3f5.png
34495e0fbc819b09c251f9cd8ecaa4b2.png
45802c673c9a11e5283e6799356484f2.png
011113d60341864a73bf5ad0dae0b66d.png
e4f42568d67197e7695826f588c9210f.png
29e5a66730e22e3416187a1a17f596eb.png
c15535f27950d342da247fcfe5e6d4ae.png
179d317f2ee0c7db97ffcaaf7af3a845.png
41034392524fcf01ea9e426b53318fba.png
901f1d6614e4422959d38120e88e9ca8.png
08294ac6b0ff1fa626d3ecd3d2df6556.png
61bd31098c02921bfd0eb0792913a76b.png

在上图中因为名字中也含有单引号,此时我们需要用到转义字符转换才能运行,否则会报错。常见转义字符:

631d223146dc74f7f16e43053ad5f5bf.png
e543b0c4584a1a111c2530f485507d7b.png
e06b9826ad6d6a826eff67421cc57d26.png

这道题的SQL语句解释如下:subject in ('Physics','Chemistry')返回值(0或者1),会对每一个subject做一个if的判断,再用order by 将这些值排序在下面。

716810b9393210167ba6da0d072f533c.png
6f2700cdd8f8245be29f4ce03efb3985.png

SQLZOO汇总分析答案:

de2e6dc951e07db610f96210cb811a20.png
634ae754cd0656f21b6a8f00e21570ad.png
a942797cb3409aa8c5d622285ce8bf0e.png
f025624df9cad99f273c4f4fac7058d6.png
d6fe02a9efef9e0838b508cd5eda46f7.png
238f35e1c4a0a8fc27cd8b09992ed56f.png
4cd87470bfdf5c9e070fff9faba5cbce.png
5a44324951d24475ed8a8ecb5871f1ce.png

总结:本章的知识点蛮多的,而且对SQL语句的理解需要细致,在练习中也发现了有时自己对题目的理解不是很清楚,特别是在分组练习中,有时候不是很明白到底需不需要进行分组,以至于做出来的答案会跟老师的不一样,以后多强化一下自己这方面的练习。



推荐阅读
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
author-avatar
沈智强619
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有