mysql数据分组:过滤分组
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;
输出:
分析:这条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;
输出:
分析:这条语句中,第一行是使用了聚集函数的基本 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;
输出:
【相关推荐】
以上是mysql数据分组:过滤分组的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

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

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

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

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

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

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

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

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