sql 某列数据全部为0则不显示该列_数据产品经理养成记(五):汇总分析

学会了如何查找数据后,接下来就要对数据进行分析处理,比如求和、平均值、加总等等。这些对数据的加工处理通过汇总函数来实现。汇总函数在之前的两篇文章中都有涉及,这里采用概念--案例--总结的方式,集中介绍一下。

ced1866edd758c20673e3f45b4c8bc59.png

1.什么是汇总函数?

函数是SQL里的关键字,是一种运算命令。

通常来说,函数与字段名称或表达式联合使用,处理输入的数据并产生结果。SQL包含多种类型函数,其中汇总函数为SQL提供合计信息,比如计数、总和、平均等。

常见的汇总函数有以下几种:

  1. count:求某一列的行数
  2. sum:对某列数据求和
  3. avg:求某列数据的平均值
  4. max:求某列数据的最大值
  5. min:求某列数据的最小值

注意:

1. 如果汇总函数后面有null(空值),那么都会把空值排除在外进行计算。

2.如果要计算所有的行(包括空值的行),一般用星号表示,例子如下:

select 姓名,count(*)

from student;

3.sum、avg函数,只能对数值类型的列进行计算,否则会报错。

count、max、min函数,可以对任何类型计算。

举个例子说明一下,这里有一张名为“student”的表,表里面的有一些学生和课程相关的信息,如下:

c6a5aba389d602e71c12842588f3d77b.png

1.你想计算姓名这一列都多少行,需要使用‘count’函数,写法如下:

select count(姓名)from student;

2.计算成绩这一列总和,写法如下:

select sum(成绩)from student;

3.计算成绩这一列平均值,写法如下:

select avg(成绩)from student;

4.计算成绩这一列的最大值、最小值,写法如下:

select max(成绩),min(成绩)from student;

可以发现汇总函数的写法基本相似。通常来说,汇总函数是一种比较简单的函数,不会单独使用,一般都要结合其他函数(group by等)才能更好的达到分析效果。

d9d3d47c6393f1a400f6f7e784055b2c.png

2.数据分组函数

汇总函数是按照某一列对数据进行计算,比如计算【姓名】列的总数量,现在如果要看的细一点,分别计算男生、女生的总人数,怎么实现呢?这里就需要用到分组函数,看下面这张表:

fd1dd4dffbb8e686be32b761327c4dde.png

上表一共有三行数据,通过分组函数(‘group by’)来实现分组统计。‘group by’函数一般和汇总函数一起使用。对应的写法如下:

select 性别,count(*)from studentgroup by 性别;

注意:

1.上面语句的运行顺序是:第二行--第三行--第一行,也就是先选择表,再按照条件对数据分总,最后计总显示出来。

再举一个例子:

ba8b5f13db306c52780764f109be668a.png

你想统计出生日期大于‘1990-01-02’的男生总数、女生总数,该如何写SQL语句?先写出分析思路:

  1. 筛选出出生日期大于‘1990-01-02’的数据:where 出生日期 > 1990-01-02’
  2. 将数据按照性别分组:group by 性别
  3. 分别计算每一组的人数:count 性别

把上面的分析思路整理成SQL语句,如下:

select 性别,count(*) as 学生人数from student where 出生日期 > 1990-01-02’group by 性别;

以上语句运行的结果如下:

2c0baf0e5f7d834c4f8800c0be0eadb3.png

3.对分组结果指定条件

上个栗子,你统计出了出生日期大于‘1990-01-02’的男生总数、女生总数后,只想显示男生的数据,该如何写语句呢?可以使用‘having’语句对分组结果,指定条件,写法如下:

select 性别,count(*) as 学生人数from student where 出生日期 > 1990-01-02’group by 性别having 性别 = 男;

注意:

这里为什么不用‘where’子句来指定条件?因为where只能指定行的原始数据。

‘having’,用于对分组以后数据,指定条件。

4.对查询结果排序

统计出数据后,为了方便观察,通常需要对数据进行排序,简单的排序有两种,升序、降序。我们在excel中都使用过类似的功能,那么在SQL中如何实现?

7dbaa94a95586ac3ddf503c9bb186bdf.png

在SQL通过‘order by’函数来实现,一般有两种排序,降序(desc):从大到小,升序(asc):从小到大。

举个例子:

现在有一张成绩表‘score’,如下。现在你想计算出平均成绩大于80分的课程,并由高到低排列,该如何写函数?

ff988b9c9030bdd70861db22e82494cb.png

我们先写出分析思路,如下:

  1. 对成绩按照课程号分组:group by 课程号
  2. 求课程的平均值:avg (成绩) as 平均成绩
  3. 平均成绩大于80分: having 平均成绩 >80
  4. 由高到低排列(降序):order by 平均成绩 desc

把上面的分析思路整理成SQL语句,如下:

select 课程号,avg(成绩) as 平均成绩from scoregroup by 课程号having avg(成绩) > 80oorder by 平均成绩 desc;

注意:

使用‘order by’语句的时候,如果查询的列包含空值,空值会在查询结果的开头展示。如果数据库有大量数据,你只想返回一部分数据的时候,该怎么办?可以使用limit,从查询结果中,展示指定行的数据。写法如下:

select *from scorelimit 2;

意思就是只取前两行数据。

汇总分析就到这里了,关于SQL的内容还有最后一节:复杂查询,讲完了会分享一案例和数据分析的基本思路。其实SQL学习来并不很很难,它就是一门工具,你使用的越多就会越熟练。要多多练习!

欢迎持续关注,公号:数据产品经理之路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim学习日志(5):vim下wimrc的配置,解决中文乱码问题

解决linux下vim乱码的情况:(修改vimrc的内容) 全局的情况下:即所有用户都能用这个配置 文件地址:/etc/vimrc 在文件中添加: set fileencodingsutf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencodingutf-8 set enco…

Android插件化开发之AMS与应用程序(客户端ActivityThread、Instrumentation、Activity)通信模型分析

转载来自:http://blog.csdn.net/qinjuning/article/details/7262769 今天主要分析下ActivityManagerService(服务端) 与应用程序(客户端)之间的通信模型,在介绍这个通信模型的基础上,再 简单介绍实现这个模型所需要数据类型。 本文所介绍内容…

iOS开发UI篇—直接使用UITableView Controller

iOS开发UI篇—直接使用UITableView Controller 一、一般过程 1 //2 // YYViewController.h3 // UITableView Controller4 //5 // Created by 孔医己 on 14-6-2.6 // Copyright (c) 2014年 itcast. All rights reserved.7 //8 9 #import <UIKit/UIKit.h> 10 11 inter…

怎么做图片文字二维码一起_怎么做?才能让文字编排更出彩

在之前视觉设计文章中&#xff0c;我把视觉设计大致罗列了四个方向&#xff0c;更多的是希望能够为大家带来一些努力方向&#xff0c;在设计的路上不那么困惑迷茫&#xff0c;视觉设计本身涵盖的范围就比较广&#xff0c;同时也没有什么衡量的标准和具体的特征&#xff0c;只有…

.NET6之MiniAPI(八):日志

说明&#xff1a;本篇简单说一下日志中常用的几个点&#xff0c;关于日志&#xff0c;后面重点会说到三方日志提供程序在MiniAPI中&#xff0c;可以通过方法或构造函数中&#xff0c;获取框架自动注入的日志类型&#xff0c;如下方式&#xff1a;app.MapGet("/test",…

为什么你闻不到自己胳肢窝的味道?

▲ 点击查看生活中&#xff0c;我们常常会选择性地忽略一些事。吃螺蛳粉的人不会觉得屋子臭&#xff0c;而别人身上有一点烟味就可以闻到。公司的厕所&#xff0c;别人用完后&#xff0c;总觉得比自己用完时更臭。夏天胳肢窝出汗的味道&#xff0c;自己从来都闻不到&#xff0c…

Android插件化开发之Hook StartActivity方法

第一步、先爆项目demo照片&#xff0c;代码不多&#xff0c;不要怕 第二步、应该知道Java反射相关知识 如果不知道或者忘记的小伙伴请猛搓这里&#xff0c;Android插件化开发基础之Java反射机制研究 http://blog.csdn.net/u011068702/article/details/49863931第三步、应该知道…

ArcGis融合小多边形到相邻多边形

&#xfeff;&#xfeff;在有的时候&#xff0c;我们的数据中可能会有许多细小的图斑&#xff0c;这些并不是我们想要的&#xff0c;需要将它们合并到周围的图斑中&#xff0c;如果一个一个手动合并&#xff0c;那工作量之大简直不敢想象。现在借助ArcGIS的Eliminate工具可以很…

oracle 48小时内_近了近了,内马尔正大步向巴萨走来,西媒称有望48小时内敲定转会...

“即将完成&#xff01;”8月28日的西班牙《每日体育报》给巴萨球迷送上了好消息&#xff0c;称在巴萨高层与大巴黎高层进行最新一轮谈判后&#xff0c;内马尔已经非常接近巴萨了。按照《每日体育报》的说法&#xff0c;巴萨和大巴黎有望在未来24到48小时内就内马尔的转会达成协…

《随机过程》布朗运动理论中的两个反常问题

全世界只有3.14 % 的人关注了爆炸吧知识1827 年&#xff0c;英国植物学家布朗&#xff08;Brown&#xff09;用显微镜观察悬浮在液体中的花粉微粒时&#xff0c;发现花粉微粒总是在做无规则运动。后来人们发现&#xff0c;这是一种广泛存在于自然界、工程技术和社会经济等领域中…

linux之用2张图片描述vim常见命令

对了&#xff0c;使得光标跳转到最后一行是这个命令 G

读《好好学习:个人知识管理精进指南》

关于学习的文章之前写过两篇&#xff1a;《掌握好的学习方法&#xff0c;让你在职场更有竞争力》《程序员是终身学习的职业&#xff0c;应该怎么学习&#xff1f;》我们都是终身学习者&#xff0c;我深知学习的重要性&#xff0c;所以每隔一段时间&#xff0c;有些新的心得和想…

跨域解决方案大全

什么是跨域 注&#xff1a;本文完整示例地址先来说一个概念就是同源&#xff0c;同源指的是协议&#xff0c;端口&#xff0c;域名全部相同。 同源策略&#xff08;Same origin policy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺…

2013年下半年信息系统项目管理师考试试卷(回忆版)

2013年下半年信息系统项目管理师上午试卷&#xff08;网友回忆版&#xff09;信息系统的生命周期可以分为立项、开发、运维和消亡4个阶段&#xff0c;应在信息系统建设的&#xff08;1&#xff09;考虑系统消亡的条件和时机。&#xff08;1&#xff09;A&#xff0e;初期B&…

酱油和gbt酱油哪个好_酱油可不是越贵越好?看清瓶身上的5个字,教你1分钟买到好酱油...

今天妈妈做饭说酱油用完了&#xff0c;让我去打酱油的地方打5毛钱的酱油&#xff0c;我拿起塑料壶去打酱油&#xff0c;闻起来香香的&#xff0c;一个推自行车的过来&#xff0c;我问他这酱油是勾兑酱油吗&#xff1f;推自行车的小哥&#xff0c;看了我一眼&#xff0c;问我是监…

让 WPF 的 RadioButton 支持再次点击取消选中的功能

让 WPF 的 RadioButton 支持再次点击取消选中的功能目录让 WPF 的 RadioButton 支持再次点击取消选中的功能零、前言一、方法一&#xff1a;后台直接处理二、方法二&#xff1a;提取为自定义控件&#xff08;用户控件&#xff09;三、方法三&#xff1a;附加行为法独立观察员 2…

java数组转换成string_java面试复习重点:类的管理及常用工具,教你抓住面试重点

java复习&#xff1a; 类的管理及常用工具类包写在程序文件的第一行一个Java 源文件中只能声明一个包&#xff0c;且声明语句只能作为源文件的第一条指令导入类能导入非public类&#xff0c;但是不能用因为在其他包缺省的权限用不了package Testp;import Testpackage.*;public …

ubuntu 新建的用户 table 无法补全命令 解决办法

为什么80%的码农都做不了架构师&#xff1f;>>> vi /etc/passwd 用adduser命令新增了用户之后&#xff0c;发现在该新建用户下的命令终端&#xff0c;使用方向键无法调出历史命令&#xff0c;同时tab键也无法补全输入命令。 找到 你新增的用户xxx 修改/bin/bash…