由于学校老师讲得太慢,所以抽出时间来整理知识点。

说明:本系列文章使用了一个学校给的电影数据库

其中包含movies,people,credit等库,里面存放了数以万计的电影信息

之后的操作都会在这个数据库中进行

学习目标:

学会聚合函数的一些基本表示方法


学习内容:

count()函数

min()/max()函数

stddev()函数

avg()函数

join函数

学习时间:

14:00——16:00


学习产出:

一、count( )函数

select count(country) from movies;

运行结果

9538

由于本数据库一共有9538部电影,所以查询结果为条目数量为9538

ditinct 关键字去掉重复的部分

select count(distinct country) from movies;

运行结果

86

去掉所有重复的国家名,之后只剩下86个国家

组合的聚合函数

select country,year_released, count(*) number_of_movies_per_year from movies group by country, year_released;

按照年份统计各个国家的电影数量

us,1939,48
nl,2008,1
cn,2016,14
it,1960,10
ch,2011,1
fr,1961,11
us,1931,34
cn,2007,5
mn,2007,1
nz,2010,1
de,1974,2
au,1978,4
us,1935,37
eg,1987,1
in,1937,1
hk,1972,2
is,1996,1
no,2009,1
ru,2010,1
it,1949,5

##count(表达式)与count(*)之间的区别:

count(表达式)只返回表达式所在这一列非空行的行数

而count(*)则返回所有满足条件行的行数

嵌套查询

查出每一个国家最早的电影上映的年份

select country, min(year_released) from movies group by country;

运行结果

na,2007
fr,1896
sk,2017
ke,2008
si,2000
eg,1949
nz,1981
bg,1967
ru,1924
gh,2012

如果我们想把这些筛选出来的结果再进行筛选我们可以在外面进行如where函数的嵌套

select * from(select country, min(year_released) earlist_movie_year from movies group by country)
earlist_movie_queuery
where earlist_movie_year<1940 ;

运行结果

fr,1896
ru,1924
mx,1933
cn,1913
sp,1933
cl,1926
dk,1910
gb,1916
se,1913
ca,1933
hu,1918
jp,1926
us,1907
be,1926
at,1925
br,1931
de,1919
au,1906
om,1932
in,1923
it,1917
ge,1930

二、having 关键字

然而刚刚这么做存在一些隐患:

我们并不知道中间表的数据量,不好进行运行复杂度的估计,容易产生一些未曾设想的错误

所以我们可以用having关键字对刚才的语句进行一下优化

select country, min(year_released) earlist_movie_year from movies group by country having  min(year_released)<1940;

运行结果和广告我们双层嵌套的结果一样

fr,1896
ru,1924
mx,1933
cn,1913
sp,1933
cl,1926
dk,1910
gb,1916
se,1913
ca,1933
hu,1918
jp,1926
us,1907
be,1926
at,1925
br,1931
de,1919
au,1906
om,1932
in,1923
it,1917
ge,1930

三、Null s

在数据库中我们经常会看到 null这样的数据,在数据库中我们应该怎么处理null这样的数据呢?

比如当我们在这个数据库搜索“去世时间”这一列时,有很多人还没有死,所以其“去世时间”的值为null.

所以当我们用不同的方法看整个数据库所有行数时有:

select count(*) from people;

运行结果

16840

而我们只看去世时间这一行的行数会有

select count(died) from people;

运行结果

5750

所以在SQL中会直接忽视掉值为null的行,所以在SQL中实际上是完全忽视掉null的。

四、Join函数

将多个查询结果合并

比如把movies的表格和countries的表格进行合并

select title, country_name, year_released
from movies join countries on movies.country=country_code;

输出结果

12 stulyev,Russia,1971
Al-mummia,Egypt,1969
"Ali Zaoua, prince de la rue",Morocco,2000
Apariencias,Argentina,2000
Ardh Satya,India,1983
Armaan,India,2003
Armaan,Pakistan,1966
Babettes gæstebud,Denmark,1987
Banshun,Japan,1949
Bidaya wa Nihaya,Egypt,1960
Variety,United States,2008
"Bon Cop, Bad Cop",Canada,2006
Brilliantovaja ruka,Russia,1969
C'est arrivé près de chez vous,Belgium,1992
Carlota Joaquina - Princesa do Brasil,Brazil,1995
Cicak-man,Malaysia,2006
Da Nao Tian Gong,China,1965
Das indische Grabmal,Germany,1959
Das Leben der Anderen,Germany,2006
Den store gavtyv,Denmark,1956

详细的join函数会在下一次进行详细讲解。

SQL语言数据库自学整理1:聚合函数(Aggregate Founction) 2022.3.8相关推荐

  1. SQL语言_3 模糊查询和聚合函数

    SQL语言_3 模糊查询和聚合函数 作者:田超凡 版权所有,转载请注明原作者,仿冒侵权必究法律责任 1.数据库中查询的机制 查询是针对数据表中已存在的数据行而言的,可以将它简单理解为筛选,将符合条件的 ...

  2. 【3-12】数据库子查询及聚合函数

    [3-12]数据库子查询及聚合函数 一.子查询 定义:把一条查询语句当做值来使用 注:子句的查询结果必须是一列 子句可以返回多行数据,但必须是一列 (1)基本多条件嵌套查询: select *from ...

  3. SQL Server 数据库的整理优化的基本过程(二)

    SQL Server 数据库的整理优化的基本过程(二) 高建刚 第一节 基本维护 第二节 索引 索引相信大家都不陌生,而且在因特网上,有了很多关于如何通过索引来优化数据库的文章,在这里,我主要是结合我 ...

  4. SQL Server 数据库的整理优化的基本过程(三)

    SQL Server 数据库的整理优化的基本过程(三) 高建刚 第二节 索引 第三节 索引的维护 数据库在进行数据的insert.update.delete时,引擎都会自动维护索引.随着时间的积累,这 ...

  5. 【数据库演练】外键SQL语句的编写分组和聚合函数的组合使用

    外键SQL语句的编写 外键SQL语句的编写 1. 外键约束作用 2. 对于已经存在的字段添加外键约束 3. 在创建数据表时设置外键约束 4. 删除外键约束 5. 小结 演练-分组和聚合函数的组合使用 ...

  6. 你不知道的SQL语言数据库原理

    1.SQL的概述 SQL全称: Structured Query Language,是结构化查询语言,用于访问和处理数据库的标准的计算机语言. SQL语言1974年由Boyce和Chamberlin提 ...

  7. 《卸甲笔记》-PostgreSQL和Oracle的SQL差异分析之三:rownum和聚合函数

    PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用.随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来 ...

  8. SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

    聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计 ...

  9. mysql笔记整理2(聚合函数).md

    SQL 中的聚合函数 (统计次数) 语法:select sum(列名) ,sum(列名) ,-from 表名; select count() from 表名 统计表中的行数. select count ...

最新文章

  1. 2022-2028年中国PE自粘性保护膜行业市场调查研究及发展前景展望报告
  2. 第三部分:Android 应用程序接口指南---第一节:应用程序组件---第七章 App Widgets...
  3. 小明分享|8ms平台下工程源码分析
  4. [C++11]使用using和typedef给模板定义别名
  5. python代码大全和用法用量_python零基础入门命令方式汇总大全,快速恶补你的Python基础...
  6. zlib库对文件进行压缩和解压操作
  7. 各型号英特尔CUP的功率
  8. 如何使用Intellij IDEA工具导入SVN项目
  9. Focal Loss-RetinaNet算法解析
  10. 【心得】Web设计师应参考的技术
  11. go有没有php的array,实现类似php的array_column方法
  12. 远程连接Linux系统
  13. python进阶路线 知乎_Python自学路线图之Python进阶
  14. 第四讲 移动互联网接入技术
  15. 兼容android 6.0以上获取设备编号等权限
  16. 2020哔哩哔哩校招前端笔试编程题
  17. 『大牛公司机构近期研究报告大合集』第二版
  18. JavaScript数据类型及转换
  19. 倚天屠龙记君临天下_战斗系统
  20. 一篇好文,以在迷茫时阅读(文章转载自CSDN)

热门文章

  1. 怎样解决南北互通的难题?
  2. 用计算机3d建模做紫砂壶好吗,3D建模制壶,走在制壶科技的前沿——潘洪强
  3. 如何扒别人网站(网页) 附扒网站神器
  4. 计算机知识太多了记不住,背得滚瓜烂熟的知识点 为什么一上考场全忘了?这样做事半功倍...
  5. lua 区间比较_自然区间匹配算法 - borey的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. 微信小程序蓝牙BLE开发——写入一串16进制数据,低字节在前(五)
  7. Python每日一练——列表,元组和字典第十一关:del和pop的用法
  8. linux 进程sockfd fork,Linux下多进程服务端客户端模型一(单进程与多进程模型)...
  9. 闭环管理--循环往复的闭环系统
  10. C++实验七——类的继承(1)