新手村之SQL——分组与子查询

1.GROUP BY
GROUP BY 函数就是 SQL 中用来实现分组的函数,其用于结合聚合函数,能根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。

mysql> SELECT `country`, COUNT(`country`) AS `teacher_count`-> FROM `teachers`-> GROUP BY `country`-> ORDER BY `teacher_count`, `country`;
+---------+---------------+
| country | teacher_count |
+---------+---------------+
| JP      |             1 |
| UK      |             1 |
| USA     |             1 |
| CN      |             2 |
+---------+---------------+
4 rows in set (0.04 sec)

2.HAVING 子句
我们在使用 WHERE 条件子句时会发现其不能与聚合函数联合使用,为解决这一点,SQL 中提供了 HAVING 子句。在使用时, HAVING 子句经常与 GROUP BY 联合使用,HAVING 子句就是对分组统计函数进行过滤的子句。

mysql> SELECT `T`.`name`, IFNULL(SUM(`C`.`student_count`),0) AS `student_count`-> FROM `courses` `C` -> RIGHT JOIN `teachers` `T` ON `C`.`teacher_id` = `T`.`id`-> GROUP BY `T`.`id`-> HAVING `student_count` < 3000-> ORDER BY `student_count`, `name`;
+------------------+---------------+
| name             | student_count |
+------------------+---------------+
| Linghu Chong     |             0 |
| Northern Beggar  |             0 |
| Southern Emperor |          1520 |
+------------------+---------------+
3 rows in set (0.02 sec)

例题

在这里插入图片描述
在这里插入图片描述

筛选出同一国家的教师平均年龄大于所有教师平均年龄的国家,并获取这些国家的所有教师信息

拆分:

1.先选出教师平均年龄大于所有教师平均年龄的国家

SELECT country from teachers
group by country
having avg(age) > (SELECT avg(age) from teachers)

2.拿着这些国家去teachers表里找出教师信息

SELECT * from teachers
where country in(
SELECT country from teachers
group by country
having avg(age) > (SELECT avg(age) from teachers)
);

3.内联视图子查询
现需要查询国籍为美国(USA),且年龄最大的教师,请使用内联视图子查询实现。

本题将从教师表中查询到的美国教师作为内联表,再使用 WHERE 子句进行查询操作。

SELECT *
FROM (SELECT *FROM `teachers`WHERE `country` = 'USA'
) `T`
WHERE `age` = (SELECT MAX(`age`)FROM `teachers`WHERE `country` = 'USA'
);

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

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

相关文章

数据爬取+可视化实战_告白气球_词云展示----酷狗音乐

一、前言 歌词上做文本分析&#xff0c;数据存储在网页上&#xff0c;需要爬取数据下来&#xff0c;词云展示在工作中也变得日益重要&#xff0c;接下来将数据爬虫与可视化结合起来&#xff0c;做个词云展示案例。 二、代码 # -*- coding:utf-8 -*- # 酷狗音乐 通过获取每首歌…

学习笔记三十五:Ingress-controller高可用

Ingress-controller高可用 Ingress-controller高可用特别注意&#xff1a; 通过keepalivednginx实现ingress-nginx-controller高可用安装nginx主备&#xff1a;修改nginx配置文件。主备一样keepalive配置主keepalived备keepalivek8snode1和k8snode2启动服务测试vip是否绑定成功…

python实现two way ANOVA

文章目录 目的&#xff1a;用python实现two way ANOVA 双因素方差分析1. python代码实现1 加载python库2 加载数据3 统计样本重复次数&#xff0c;均值和方差&#xff0c;绘制箱线图4 查看people和group是否存在交互效应5 模型拟合与Two Way ANOVA&#xff1a;双因素方差分析6 …

Docker 下载加速

文章目录 方式1&#xff1a;使用 网易数帆容器镜像仓库进行下载。方式2&#xff1a;配置阿里云加速。方式3&#xff1a;方式4&#xff1a;结尾注意 Docker下载加速的原理是&#xff0c;在拉取镜像时使用一个国内的镜像站点&#xff0c;该站点已经缓存了各个版本的官方 Docker 镜…

Redis的高可用模式

1. 什么是高可用&#xff1f; 高可用&#xff08;High Availability, HA&#xff09;是指在信息技术中确保系统、服务或应用程序在绝大多数时间内都是可操作和可访问的能力。这通常涉及以下几个关键方面&#xff1a; 最小化停机时间: 高可用系统的目标是减少因硬件故障、系统升…

Linux基本指令(中篇)

目录 8.cp指令&#xff08;重要&#xff09; 9.mv指令&#xff08;重要&#xff09;&#xff1a; 10.cat指令&#xff08;适合查看小文件内容&#xff09; 11.more指令&#xff08;适合查看大文件内容&#xff09; 12.less指令&#xff08;重要&#xff09; 13.head指令和…

IntelliJ IDEA安装使用教程

IntelliJ IDEA是一个流行的Java 集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发。它是一款全功能的IDE&#xff0c;支持多种编程语言&#xff0c;如Java、Kotlin、Groovy、Scala、Python、JavaScript、HTML、CSS等等。IntelliJ IDEA 提供了高效的代码…

ios 逆向分分析,某业帮逆向算法(一)

用到工具: 爱思助手CrackerXL(砸壳软件)越狱手机ida反汇编软件分析login 的sign 签名算法中自己写算法 已知我们32位,我们不妨猜测是md5 ,那我们试图使用CC_MD5 ,这个是ios 中的标准库, 我们使用frida-trace 注入hook一下,看看有没有 经过 是经过了这个函数,密码也是…

一款适用于船载、化工园区、工厂的防水LoRa网关推荐

工业网关的实践应用场景非常广泛&#xff0c;比如&#xff1a;工业现场PLC、变频器、机器人等设备的远程维护&#xff1b;工程机械的远程维护和管理&#xff1b;车间设备与工艺系统的远程维护和管理&#xff1b;小区二次供水水泵的远程监测及控制&#xff1b;油气田和油井等现场…

React Native环境搭建及Hello World

写这篇博客的目的就是想说,react native 挺简单,但是大部分初级前端会被环境搭建给难住,从而放弃. 环境搭建 环境搭建其实说简单也挺简单的,有经验的前端直接翻看react native中文文档就行,直接按上面来肯定没错 以下以安卓开发,windows配置环境为例,来演示一遍 首先 电脑…

java 对象大小计算

说明&#xff1a; 对于64位机&#xff1a;一个对象由三部分组成 对象头(object header) mark word &#xff1a;64bitkclass pointer &#xff1a;32bit(默认使用指针压缩)&#xff0c;如果取消指针压缩( XX:-UseCompressedOops)&#xff0c;则占用64bit数组长度&#xff1a;数…

C++基础——文件操作

文章目录 1 概述2 文本文件2.1 写文件2.1.1 写文件流程2.1.2 文件打开方式 2.2 读文件 3 二进制文件3.1 写文件3.2 读文件 1 概述 程序最基本的操作之一就是文件操作&#xff0c;程序运行时的数据都是临时数据&#xff0c;当程序结束后就不复存在了。通常都是通过文件或其他持…