分组查询子查询

news2025/8/11 21:04:35

分组查询

分组查询是指使用 group by 字句对查询信息进行分组。

格式: SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;

分组操作中的 having 子语句,是用于在分组后对数据进行过滤的,作用类似于 where 条 件。

  • having与where的区别:

    • having是在分组操作执行后,对分组后的数据进行过滤.。

      where是在分组操作执行前,对分组前表的原始列进行过滤

    • having后面可以使用聚合函数。where后面不可以使用聚合函数,只能用条件过滤。

  • 当一条SQL语句中, 既有where 又有 group by \ having 时, 先执行 where, 再执行 group by, 最后执行having

# 查询商品表,返回供应商1003提供的产品数目
SELECT COUNT(*) AS prod_num
FROM products
WHERE vend_id = 1003;

# 如果我想查询每个供应商提供的产品数量呢?
SELECT vend_id, COUNT(*)
FROM products
GROUP BY vend_id;

# 查询每个供应商提供的产品数量,并且产品数量大于2的供应商id
SELECT vend_id, COUNT(*)
FROM products
GROUP BY vend_id
HAVING COUNT(*) > 2;

# 思考题:查询每个供应商提供的产品数目,
# 以及每个供应商提供的商品中最贵的价格;
# --提示,在同时查询多个聚合函数
SELECT vend_id, COUNT(*) AS '数量', MAX(prod_price) AS '最贵'
FROM products
GROUP BY vend_id;

# 思考题:在供应商id大于1001的供应商中,查询每个供应商提供的产品数目,
# 以及每个供应商提供的商品中最贵的价格;
SELECT vend_id, COUNT(*), MAX(prod_price)
FROM products
WHERE vend_id > 1001
GROUP BY vend_id;

# 思考题:在供应商id大于1001的供应商中,查询每个供应商提供的产品数目,
# 以及每个供应商提供的商品中最贵的价格,并且最高价格大于10的数据
SELECT vend_id, COUNT(*), MAX(prod_price)
FROM products
WHERE vend_id > 1001
GROUP BY vend_id
HAVING MAX(prod_price) > 10;

# 思考题:在供应商id大于1001的供应商中,查询每个供应商提供的产品数目,
# 以及每个供应商提供的商品中最贵的价格,
# 并且最高价格大于10的数据,并按供应商id从高到低排序
SELECT vend_id, COUNT(*), MAX(prod_price)
FROM products
WHERE vend_id > 1001
GROUP BY vend_id
HAVING MAX(prod_price) > 10
ORDER BY vend_id DESC;

# 作业题:从订单明细表中,查询每笔订单的订单编号和订单总额,
# 并且得到订单总额大于100的数据,将最终结果按照订单总额从大到小排序,
# 取前两条数据
SELECT order_num, SUM(quantity * item_price)
FROM orderitems
GROUP BY order_num
HAVING SUM(quantity * item_price) > 100
ORDER BY SUM(quantity * item_price) DESC
LIMIT 2;

注意事项:

  • GROUP BY 常和聚合函数一起使用,来统计数据。
  • GROUP BY后面可以跟多个列。例如: group by 年级列,班级列 。就会先按年级分组,再按班级进行分组
  • 分组后所有的数据统计都将在分组上进行汇总,也就是说不能从个别的列取数据。
  • 在分组查询中,select 后的列名,要么是函数,要么是GROUP BY后的分组列。
  • 如果分组中有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。
  • GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。
  • 我们可以发现用GROUP BY分组的数据确实是以分组顺序输出的。但这样的顺序并不是一定的,因为它并不是SQL规范所要求的。所以,需要以分组顺序输出时,ORDER BY 必须要写。
  • ORDER BY 是对最终的查询结果进行排序。

子查询

SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询。

在这里插入图片描述

在WHERE子句中使用子查询能够编写出功能很强并且很灵活的SQL语句。

对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询。

提示:子查询一般与IN操作符结合使用,但也可以用于等于、不等于等。

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

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

相关文章

在agx xavier上运行 deepstream的样例 deepstream-test4

在agx xavier上运行 deepstream的样例 deepstream-test4 主要演示如何将检测结果通过kafka发送到服务器。 deepstream版本:5.0 前置条件:服务器上正常运行的kafka服务。 下面主要讲发送端的操作。 1、安装依赖项 1)所有样例都需要的依赖…

Prometheus 采集snmp监控数据

download snmp_exporter snmp_exporter采集数据 snmp_exporter 一键监控安装脚本 vim /snmp_exporter.sh #!/bin/sh # -*- coding: utf-8 -*- # Date: 2022/11/18echo "download snmp_exporter" sleep 2 wget -N -P /root/ https://github.com/prometheus/snmp_ex…

美食杰项目 -- 菜谱大全(二)

目录前言:具体实现思路:步骤:1. 展示美食杰菜谱大全效果2. 引入element-ui3. 代码总结:前言: 本文给大家讲解,美食杰项目中菜谱大全实现的效果,和具体代码。 具体实现思路: 点击头…

金蝶苍穹开发工程师初级学习第一节

金蝶苍穹开发工程师初级学习第一节 ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,金蝶首发! 😘系列专栏:低代码学习 💻首发时间:🎞2022年11月12日&a…

github action定时任务

需求 定时任务1 (8:00~13:00),执行bash脚本定时任务2 (18:00),修改定时任务1的执行时间 文档 workflows官方文档workflows action uses查询actions/checkoutv3About the GITHUB_TOKEN secret 问题之refusing to allow a GitHub App to create or upd…

MySQL:常用函数解析、开窗函数示例

数学函数 count() count()、count(field) 统计某个结果集中的总数量,field为要统计的字段。 SELECT count( 1 ) FROM db1.users 复制代码 sum() sum(field) 统计某个字段累计的总和,field为要统计的字段。 SELECT sum( price ) FROM order_info 复制…

Git 操作流程与命令汇总

1. 为什么要使用 git ? 在写项目时,会产生多个版本,以及多个同学协同配合的情况,为了很好的管理,推出了Git, 版本管理工具,持久化,多人化 2. 首先需要弄明白四个概念 工作区:仓库…

深入浅出mybatis分页

MyBatis 分页插件 PageHelper 如何使用&#xff1f; 如何使用分页插件 1&#xff1a;添加依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.5</ver…

基于springboot学生管理系统设计与实现

摘  要 目前&#xff0c;借助信息管理系统能够有效解决高校的信息管理问题&#xff0c;对于提高教育管理水平有着非常重要的作用。 因此&#xff0c;有必要建立一个与之相适应的管理信息系统。基于此&#xff0c;本文为了使教师高效地管理学生信息&#xff0c;需要对现代的学…

【LeetCode-中等】221. 最大正方形(详解)

题目 在一个由 0 和 1 组成的二维矩阵内&#xff0c;找到只包含 1 的最大正方形&#xff0c;并返回其面积。 力扣原题链接 方法1&#xff1a;暴力 暴力法一般不是最优解&#xff0c;但是可以拿来练手 由于正方形的面积等于边长的平方&#xff0c;因此要找到最大正方形的面积&…

【C++】C++基础知识(八)---结构体

C基础知识&#xff08;八&#xff09;1. 定义与使用2. 结构体数组3. 结构体指针4. 结构体嵌套5. 结构体作函数参数6. 结构体中const使用场景7. 结构体使用案例1. 定义与使用 结构体定义&#xff1a; ------结构体属于用户自定义的数据类型&#xff0c;允许用户存储不同的数据类…

元宇宙持续升温,金蝶推出数字员工破圈而来

作者 | 伍杏玲 “金小蝶&#xff0c;请分析今年企业销售事业部的业绩”。 话音刚落&#xff0c;大屏幕展开一张张账务报表&#xff0c;一位身着西装&#xff0c;举止大方得体的数字人条理清晰地回复&#xff1a;“截至今年10月&#xff0c;企业销售事业部在签单金额、新签收入…

数字化转型过程中,企业如何搭建好数据安全?

在企业数字化转型变革中&#xff0c;确保数据安全是企业的责任也是重任。“数据安全”关乎企业数字化发展和未来的商业模式及竞争力&#xff0c;如何在企业数字化转型过程中搭建好“数据安全”的保障&#xff1f; 一、建立数据安全保护意识 互联网时代&#xff0c;有各种各样、…

Vue--》详解Vue组件生命周期的三个阶段

目录 组件生命周期 创建阶段 beforeCreate阶段&#xff1a; created阶段&#xff1a; beforeMount阶段&#xff1a; mounted阶段&#xff1a; 运行阶段 beforeUpdate阶段&#xff1a; updated阶段&#xff1a; 销毁阶段 beforeDestroy阶段&#xff1a; destroyed阶…

windows工作窗口太多,需要频繁切换?摸鱼利器你必须了解下

当我们创作一份内容需要使用到不同窗口的信息时&#xff0c;无比苦恼的就是窗口需要频繁切换了&#xff0c;并且当我们需要参照某个窗口时&#xff0c;这时如果可以把窗口置顶甚至透明窗口效率翻倍&#xff01; WindowTop 是一款窗口自定义设置工具&#xff0c;可将任意窗口置…

[附源码]计算机毕业设计JAVA购买车票系统

[附源码]计算机毕业设计JAVA购买车票系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

怎么把加密的PDF解密?安利几个办公小技巧

大家都知道给pdf文件加密是对文件的一种保护措施&#xff0c;但是如果我们需要对其进行频繁的编辑改动的话&#xff0c;加了密的pdf文件操作起来就很不方便&#xff0c;因为每次的打开都需要输入密码&#xff0c;这个操作其实很浪费时间&#xff0c;其实我只需要将其解密就好了…

用pageOffice文档控件实现 office文档在线编辑

第三方文档控件&#xff0c;pageOffice 系统开发中经常要处理办公文档&#xff0c;如果word&#xff0c;excel&#xff0c;ppt&#xff0c;编辑整理&#xff0c;保存&#xff0c;归档。 开发市场上也有很多第三文文档控件&#xff0c;多年的总结&#xff0c;还是认为pageOffi…

Unity学习之Shader

Shader 是用来实现图像渲染的&#xff0c;用来替代固定渲染管线的可编辑程序。其中Vertex Shader&#xff08;顶点着色器&#xff09;主要负责顶点的几何关系等的运算&#xff0c;Pixel Shader&#xff08;像素着色器&#xff09;主要负责片元颜色等的计算。顶点Shader负责改变…

【毕业设计】微信小程序商城购物系统

文章目录0 前言1 项目介绍1.1 代码工程结构1.2 前端技术1.3 后端技术1.4 实现功能1.4.1 会员管理1.4.2 商城配置1.4.3 商品编辑1.4.4 推广管理1.4.5 订单管理1.4.6 系统管理1.4.7 短信服务平台2 运行效果2.1 前端效果2.2 后端效果3 实现部分源码3.1 前端布局3.2 后端逻辑4 最后…