首页 数据库 mysql教程 mysql数据分组:过滤分组

mysql数据分组:过滤分组

May 09, 2017 pm 01:48 PM

mysql过滤分组

除了能用group by分组数据外,MySQL还允许过滤分组,规定包括哪些分组,排除哪些分组。例如,可能想要列出至少有两个订单的所有顾客。为得出这种数据,必须基于完整的分组而不是个别的进行过滤。

我们已经看到了where子句的作用。但是,在这个例子中where不能完成任务,因为where过滤指定的是行而不是分组。事实上,where没有分组概念。

那么,不使用where使用什么呢?MySQL为此目的提供了另外的子句,那就是having子句。having非常类似于where。事实上,目前为止所学过的所有类型的where子句都可以用having来替代。唯一的差别是where过滤行,而having过滤分组。

注意:having支持所有的where操作符。

那么,怎么过滤分组呢?请看下面的例子:

输入:

select cust_id,count(*) as orders from orders group by cust_id having count(*) >= 2;
登录后复制

输出:

QQ截图20170509101253.png

分析:这条select语句的前3行类似于上面的语句。最后一行增加了having子句,它过滤count(*>)>=2(两个以上的订单)的那些分组。

正如所见,这里where子句不起作用,因为过滤是基于分组聚集值而不是特定行值的。

having和where的差别:这里有另一种理解方法,where在数据分组前进行过滤,having在数据分组后进行过滤。这是一个重要的区别,where排除的行不包括在分组中。这可能会改变计算值,从而影响having子句中基于这些值过滤掉的分组。

那么,有没有在一条语句中同时使用where和having子句的需要呢?事实上,确实有。假如想进一步过滤上面的语句,使它返回过去12个月内具有两个以上的顾客。为达到这一点,可增加一条where子句,过滤出去12个月内下过的订单。然后再增加having子句过滤出具有两个以上订单的分组。

为更好的理解,请看下面的例子,它列出具有2个(含)以上、价格为10(含)以上的产品供应商:

输入:

select vend_id,count(*) as num_prods from products where prod_price >= 10 group by vend_id having count(*) >=2;
登录后复制

输出:

QQ截图20170509101302.png

分析:这条语句中,第一行是使用了聚集函数的基本 SELECT ,它与前面的例子很相像。 WHERE 子句过滤所有 prod_price 至少为 10 的行。然后按 vend_id 分组数据, HAVING 子句过滤计数为 2 或 2 以上的分组。

如果没有 WHERE 子句,将会多检索出两行(供应商 1002 ,销售的所有产品价格都在 10 以下;供应商 1001 ,销售3个产品,但只有一个产品的价格大于等于 10 ):

输入:select vend_id,count(*) as num_prods from products group by  vend_id having count(*) >=2;

输出:

QQ截图20170509133420.png

【相关推荐】

  1. mysql数据分组和排序及SELECT子句顺序

  2. mysql数据分组:创建分组

以上是mysql数据分组:过滤分组的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何利用vue和Element-plus实现数据的分组和排序 如何利用vue和Element-plus实现数据的分组和排序 Jul 18, 2023 am 10:39 AM

如何利用Vue和ElementPlus实现数据的分组和排序Vue是一种流行的JavaScript框架,它可以帮助我们构建前端应用程序。ElementPlus是基于Vue的桌面端组件库,它提供了丰富的UI组件,使我们能够轻松地构建出漂亮且用户友好的界面。在本文中,我们将探讨如何利用Vue和ElementPlus来实现数据的分组和排序。首先,我们需要准备一

如何使用Vue和Element-UI实现数据的分组和汇总 如何使用Vue和Element-UI实现数据的分组和汇总 Jul 21, 2023 pm 02:37 PM

如何使用Vue和Element-UI实现数据的分组和汇总在前端开发中,我们经常会遇到需要对数据进行分组和汇总的情况。Vue是一个非常流行的JavaScript框架,而Element-UI则是一个基于Vue的组件库,它提供了丰富的UI组件,能够帮助我们快速构建页面。本文将介绍如何使用Vue和Element-UI实现数据的分组和汇总,并通过代码示例来说明。准备工

如何通过索引优化PHP与MySQL的数据排序和数据分组的效率? 如何通过索引优化PHP与MySQL的数据排序和数据分组的效率? Oct 15, 2023 pm 04:00 PM

如何通过索引优化PHP与MySQL的数据排序和数据分组的效率?在开发Web应用过程中,经常需要对数据进行排序和分组操作。而对于PHP与MySQL之间的数据排序和数据分组操作,我们可以通过索引来优化其效率。索引是一种数据结构,用于提高数据的检索速度。它可以加快数据的排序、分组以及查找操作。下面我们将介绍如何通过索引来优化PHP与MySQL的数据排序和数据分组的

ECharts柱状图(多维):如何展示数据分组和对比 ECharts柱状图(多维):如何展示数据分组和对比 Dec 18, 2023 pm 12:52 PM

ECharts柱状图(多维):如何展示数据分组和对比,需要具体代码示例ECharts是一个基于JavaScript的开源可视化库,用于展示各种类型的数据图表。其中柱状图是一种常见的数据可视化方式,可以用于展示不同组或者分类的数据分组和对比。本文将详细介绍如何使用ECharts的多维柱状图功能来展示数据分组和对比,并提供具体的代码示例供读者参考。一、EChar

PHP和PDO: 如何进行数据分组和聚合计算 PHP和PDO: 如何进行数据分组和聚合计算 Jul 28, 2023 pm 04:36 PM

PHP和PDO:如何进行数据分组和聚合计算引言:在开发Web应用程序时,经常会遇到需要对数据库中的数据进行分组和聚合计算的情况。PHP中使用PDO(PHPDataObjects)扩展来连接和操作数据库是一个常见的做法。本文将介绍如何使用PDO来进行数据分组和聚合计算,并提供相应的代码示例。连接数据库首先,我们需要使用PDO来连接到数据库。以下是一个示例

如何使用PHP和Vue实现数据分组功能 如何使用PHP和Vue实现数据分组功能 Sep 25, 2023 am 09:18 AM

如何使用PHP和Vue实现数据分组功能简介:在开发Web应用程序时,常常会遇到需要对数据进行分组的情况。使用PHP和Vue可以轻松实现数据的分组功能。本文将分步介绍如何使用PHP和Vue来实现数据分组,并提供具体的代码示例。一、准备工作安装PHP和Vue环境。创建一个名为“grouping”项目的文件夹,并创建以下文件和文件夹结构:groupingindex

如何通过Vue和Excel实现表格数据的分组和筛选 如何通过Vue和Excel实现表格数据的分组和筛选 Jul 21, 2023 pm 03:34 PM

如何通过Vue和Excel实现表格数据的分组和筛选引言:在许多实际应用中,我们经常需要对表格数据进行分组和筛选,以便更好地分析和理解数据。本文将介绍如何通过Vue和Excel来实现表格数据的分组和筛选功能,以及提供相应的代码示例,帮助读者快速上手。Vue的基本概念和环境配置Vue是一个用于构建用户界面的渐进式框架,具有简洁、高效的特点。在开始操作之前,我们首

使用CodeIgniter框架实现数据分组和聚合的步骤 使用CodeIgniter框架实现数据分组和聚合的步骤 Jul 29, 2023 am 09:13 AM

使用CodeIgniter框架实现数据分组和聚合的步骤在许多应用程序中,我们经常需要对数据库中的数据进行分组和聚合操作,以便得到有用的信息和统计结果。CodeIgniter框架提供了一些方便的工具和函数来实现这些操作。本文将介绍如何使用CodeIgniter框架来进行数据分组和聚合操作,并给出相应的代码示例。首先,我们需要确保已经安装了最新版本的CodeIg

See all articles