SQL中的聚合函数运用
参考网址: https://zhuanlan.zhihu.com/p/245115561
聚合函数是什么
聚合函数是对一组值执行计算,并返回单个值的函数。常与 SELECT 语句的 GROUP BY 子句一同使用。
常见聚合函数有哪些
- count():计数,count(列名)不计算空值,count()计入空值
- sum():对一列数据求和,必须为数字
- avg():对一列数据求均值。值为null时,计算平均值时会忽略带有null值的那一行
- min():最小值
- max():最大值
聚合函数应用的注意事项
- where子句后不能跟聚合函数
- having后可用聚合函数进行筛选
- 执行的优先顺序为:where > group by > having > order by
- 运用group by之后,select中返回的字段只能出现聚合字段(或与之对应的唯一值)和聚合函数。举个栗子:有学号、性别、年龄3个字段,如果group by性别,则只能返回性别及其相关聚合函数,如果返回年龄或者学号,则只会返回1行,往往和实际需求不符
聚合函数练习题
拿到SQL题目后,解题可分为3步(根据难易程度可进行省略):
- 翻译成大白话
- 写出分析思路
- 写出对应的sql子句
world 表格
1、计算世界总人口
分析思路:“总人口”是所有人口相加,用sum函数
SELECT SUM(population)
FROM world
2、列出所有的洲名, 每个只有一次
大白话:表中洲去重后的名称列出来
分析思路:用distinct
SELECT DISTINCT continent
FROM world
3、找出非洲(Africa)的GDP总和
分析思路:先找出非洲(where),再求和GDP(sum)
SELECT SUM(gdp)
FROM world
WHERE continent = 'Africa'
4、有多少个国家面积大于一百万
分析思路:先筛选出面积大于一百万的国家(where),再对这些国家进行计数(count)
SELECT count(name)
FROM world
WHERE area > 1000000
5、“法国”,“德国”,“西班牙”的總人口是多少?
分析思路:先筛选出法国”,“德国”,“西班牙”(where),再对这些国家人口进行求和(sum)
SELECT sum(population)
FROM world
WHERE name in ('France','Germany','Spain')
6、对每一个洲,展示洲份和国家的数量
分析思路:对洲进行分组(group by),然后对每组国家数量进行计数(count)
SELECT continent, count(name)
FROM world
GROUP BY continent
7、对每一个洲,展示洲份和至少有1000万人口国家的数目
分析思路:先筛选出有1000万人口的国家(where),然后对洲进行分组(group by),最后给出计数结果(count)
SELECT continent, count(name)
FROM world
WHERE population >= 10000000
GROUP BY continent
注意:这里筛选1000万人口不能用having来完成,因为人口不是分组字段(continent才是),这是我最开始刷题时常常混淆的地方(指where和having)
8、列出有至少1亿人口的洲
分析思路:先对洲进行分组(group by),然后计算每个洲的人口总和(sum),最后筛选出有1亿人口的洲(having)
SELECT continent
FROM world
GROUP BY continent
HAVING SUM(population) >= 100000000
SQL中的聚合函数运用的更多相关文章
- SQL中的聚合函数
聚合函数是对一组值执行计算并返回单一的值的函数,它经常与SELECT语句的GROUP BY子句一同使用,SQL SERVER 中具体的聚合函数如下:1. AVG 返回指定组中的平均值,空值被忽略. 例 ...
- SQL Server 自定义聚合函数
说明:本文依据网络转载整理而成,因为时间关系,其中原理暂时并未深入研究,只是整理备份留个记录而已. 目标:在SQL Server中自定义聚合函数,在Group BY语句中 ,不是单纯的SUM和MAX等 ...
- 【SQL】CLR聚合函数什么鬼
之前写过一个合并字符串的CLR聚合函数,基本是照抄MS的示例,外加了一些处理,已经投入使用很长时间,没什么问题也就没怎么研究,近日想改造一下,遇到一些问题,遂捣鼓一番,有些心得,记录如下. 一.杂项 ...
- SQL中CHARINDEX()/INSTR()函数和SUBSTRING()/SUBSTR()函数
一.SQLServer中的CHARINDEX() 和ORACLE中的INSTR()函数 1.INSTR(C1,C2[,I[,J]]) [功能]在一个字符串中搜索指定的字符,返回发现指定的字符的位置; ...
- 在MongoDB中实现聚合函数 (转)
随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的 ...
- 在MongoDB中实现聚合函数
在MongoDB中实现聚合函数 随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加. ...
- (转)SQL中的ISNULL函数介绍
SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...
- (转)SQL中的ISNULL函数介绍
SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...
- SQL点滴30—SQL中常用的函数
原文:SQL点滴30-SQL中常用的函数 该文章转载自http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html 别人的总结,很 ...
随机推荐
- 必须要了解的Linux基本操作
Linux常用的基础操作 1.命令行提示字符 2.切换用户 3.查看当前主机的完整名称 4.临时设置主机 ...
- C语言:char讲解与例子
#include <stdio.h> main() { char bla,blb,blc;//声明或定义三个字符型变量,变量名为bla,blb,blc //字符型数据用标识符char来标识 ...
- ES6新增语法(三)——面向对象
ES6中json的2个变化 简写:名字和值相同时,json可以可以简写 let a=12,b=5; let json = { a, b } console.log(json) // { a:12 , ...
- IDEA 生成类注释和方法注释
目录 一.生成类注释-01 1.1.生成类注解模板 1.2.把模板设置到IDEA中 1.3.效果图 二.生成类注释-02 2.1.生成类注释模板 2.2.把模板设置到IDEA中 2.3.效果图 2.4 ...
- js扩展函数收集
1,checkbox序列化 2,form表单对象化 3,数组字符串化
- Javascript闭包解析----------------v客学院技术分享
跟java,php等编程语言一样,javascript也采用词法作用域,简单的来说就是函数的执行依赖于变量的作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的.为了实现这种词法作用域,还必 ...
- noip模拟26[肾炎黄·酱累黄·换莫黄]
\(noip模拟26\;solutions\) 这个题我做的确实是得心应手,为啥呢,因为前两次考试太难了 T1非常的简单,只不过我忘记了一个定理, T2就是一个小小的线段树,虽然吧我曾经说过我再也不写 ...
- vulnhub-DC:2靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-2,311/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...
- onclick="return doAlert()" onclick="return false"
return false不是取bai消事件冒泡,而是取消"du浏览器默认行为".比如一个链接zhi<a href="http://zhidao.baidu.com& ...
- spring IOC体系图