sql sum条件求和_SQL:SQLbolt练习题讲解3

news/2025/2/26 13:38:07

我们已经在前面两部分中介绍到了SQL中的单表查询与多表查询的问题,今天我们继续来讲解SQL。在实际的应用中,我们可能会遇到这样的一种情形:假设你有一张员工表,员工表中有学生的籍贯信息,你的BOSS想让你统计一下来自哪些省份的员工比较多。面对这样一个问题,你该怎么做呢?这样的问题,就需要用到SQL中的分组聚合操作了。今天,我们就来讲解几道sqlbolt中的分组聚合操作的习题。本人初学SQL,对SQL了解不深,有错误,还请各位大神赐教。

话不多说,我们直接讲题,我们还是先把表和问题展示出来:

3d1412ea5590cc2f9203f49a42f9e141.png
图1:员工表

b1172a76f3615f2122b450c21b419284.png
图2:员工信息表中涉及的问题
  • 问题一:找到这个工作室中,工龄最长的员工的工作时长。这一道题,其实并不涉及分组聚合操作,我们直接给出答案:
select Years_employed
from Employees
order by Years_employed desc
limit 1
  • 问题二:找到每一份工作的员工的平均年限。这一个题,涉及到了分组聚合操作,SQL语句如下所示:
select role,avg(Years_employed)
from Employees
group by role

分组聚合操作的命令是group by,同时在这个例子我们还用到了avg这个统计指标。在进行分组聚合操作的时候,select中要紧跟着分组聚合的标准(例如本例中的role)。此外,在进行分组聚合操作的时间,我们需要用到一些统计指标,常见的统计指标有以下五个:

  1. count:计数指标
  2. avg:返回平均值
  3. min:返回最小值
  4. max:返回最大值
  5. sum:进行求和
  • 问题三:统计每栋大楼中,员工的工作总时长。SQL语句如下:
select Building,sum(Years_employed)
from Employees
group by Building

好了,第一阶段的习题,我们就讲解到这里了,为了方便大家练习,我附上这三道练习题的链接:

SQL Lesson 10: Queries with aggregates (Pt. 1)​sqlbolt.com

前面的讲解,我们只是介绍了第一部分。在日常工作中,我们有可能还需要在分组聚合之后,进行筛选,面对这样一种全新的需求,我们该怎么做呢?我们下面,就简单介绍一些:

还是先展示表与问题:

f6c6e47780ed7f115d4029c13c4f1e51.png
图3:员工表

c87a4e9b52dd9968658c7ac500f56423.png
图4:相关习题
  • 问题一:查找工作室中有多少位艺术家(不要使用having语句)。根据题目的要求,我们可以知道,这道题即可以使用having语句,也可以不使用having语句。我们两种操作都会展示一下,首先是不使用having语句:
# 不使用having语句
select count(*)
from Employees
where Role="Artist"

现在,使用having语句:

# 使用having语句
select Role,count(*)
from Employees
group by Role
having Role="Artist"

可见,having是可以在分组聚合之后进行条件筛选的。

  • 问题二:找到在这个工作室中,不同岗位各有多少人。SQL语句如下:
select Role,count(*)
from Employees
group by Role
  • 问题三:找到所有工程师的工作总时长。很明显,SQL语句可以有两种写法,一种是使用having,另外一种则不使用having。我们都展示一下:
# 使用having语句
select Role,sum(Years_employed)
from Employees
group by Role
having Role="Engineer"
# 不使用having语句
select Role,sum(Years_employed)
from Employees
group by Role
having Role="Engineer"

还是和第一部分一样,我们附上习题的链接:

SQL Lesson 11: Queries with aggregates (Pt. 2)​sqlbolt.com

今天,我们介绍了SQL中的分组聚合操作,涉及到了group by和having两个操作。好了,今天就介绍到这里了。


http://www.niftyadmin.cn/n/1897474.html

相关文章

koa 实现 jwt 认证

关于 Token 认证机制,这里不做更多解释。不清楚的可以看我的这篇文章:Web开发中常见的认证机制GitHub 地址:koa-jwt-sample 所需库bcrypt - 用于加密密码koa-jwt - jwt 中间件jsonwebtoken - 用于生成token下发给浏览器,在 koa2 以…

(原創) 無號數及有號數的乘加運算電路設計 (IC Design) (Verilog) (OS) (Linux)

Abstract有號數(signed operation)由於需要2s complement,所以乘加運算方式和無號數(unsigned operation)不同,該如何實現這兩種運算呢?Introduction 欲設計一個電路計算a * b c,當mode0時,採用unsigned operation,當…

想追求更个性的时尚?你应该选择一台灵耀3 Deluxe

时尚和个性,可以说是天生相爱相杀的一对儿。时尚代表着当前时期大众对美的审视,而在追求的过程中,与众不同的时尚却更能获得他人的关注,实现更强烈的自我体现。时尚人士不会放过任何展现自我的机会,任何物品都可能成为…

python软件几个g_python全栈学习总结一:pythong基础:软件使用、变量及语句

一 软件使用1 第一句Python在C盘根目录下,创建1.tx文本,打开并输入如下内容保存。#!/usr/bin/env python#-*- coding:utf8 -*-print("人生苦短,我学python!")打开window系统下DOS命令窗口,如下图执行&#x…

SCVMM 2008 的P2V测试

SCVMM 2008 的P2V测试在SCVMM 2008 R2 中的物理及到虚拟机的迁移(P2V)共分两种:脱机P2V和联机P2V对于联机P2V,VMM会使用卷影复制服务来复制数据,同时服务器继续处理用户请求。对于脱机P2V,源计算机会启动到…

漏洞收集哪家强?FBI 不输任何地下军火商!

如果评选2016年新晋最酷的科技机构,FBI 应该榜上有名。 这个惩恶扬善的机构最近经常挑战人类科技的极限。上个月充满极客范地碾压了苹果,这个月又强势地手撕“暗黑浏览器”Tor。之所以FBI这么被人关注,归根结底是因为他们手上经常有“好货”—…

Add VMware VirtualCenter to SCVMM2008

如果想通过SCVMM管理Vmware Infrastructure 3环境,实际上CMM是通过VMware infrastructure API来管理Vmware的,因此必须将VMware VirtualCenter服务器添加到VMM中,才能开始管理VMware一:将VMware VirtualCenter服务器添加到Virtual…

新建html底部出现script,在HTML页面中提取所有script标签并追加到文档的底部

答案很简单,可能会错过许多细微差别。如何,这应该让你知道如何去做,改善它。我相信这可以改进,但你应该能够在文档的帮助下快速完成。from bs4 import BeautifulSoupdoc [Page title,This is paragraph one.,This is paragraph t…