博客
关于我
mysql之分组查询GROUP BY,HAVING
阅读量:801 次
发布时间:2023-02-11

本文共 1237 字,大约阅读时间需要 4 分钟。

一、查询格式

在编写SQL查询时,需要遵循明确的语法结构。查询列表需要包含以下关键要素:

1. **选择列和函数**:使用`select`语句指定要查询的字段和聚合函数。例如,`select column, group_function(column)`。 2. **指定表名**:明确要操作的数据库表。例如,`from table_name`。 3. **筛选条件**:在`where`子句中添加条件筛选数据。注意:`where`子句后面不能使用`group by`或`having`后的字段别名。 4. **分组操作**:在`group by`子句中指定分组依据字段。例如,`group by field`。 5. **排序子句**:在`order by`子句中定义排序规则。例如,`order by column DESC`。

需要注意的是,查询列表比较特殊,`group by`和`having`后面的字段可以使用原语句前部分定义的别名,而`where`子句后面不能使用别名。

二、分组查询的案例

在实际操作中,需要注意分组查询的逻辑顺序。对于带筛选条件的分组查询,通常分为两种类型:

1. **分组前筛选**:通过原始表数据对记录进行筛选。这种方法可以直接放在`where`子句中。 2. **分组后筛选**:筛选条件依赖于`group by`后的聚合函数结果。这种情况下,筛选条件只能放在`having`子句中。

编写分组查询时,可以按照以下步骤进行:

1. 先写出`select`、`from`、`group by`的基本框架。 2. 观察筛选条件是否可以通过`where`子句完成。如果可以,直接在`where`中添加;如果不行,则需要将其放在`having`子句中。 3. 如果筛选条件涉及聚合函数的结果,则一定要放在`having`子句中。 4. 尽量先使用`where`子句进行筛选,减少`having`子句的使用,以提高查询性能。

**示例:简单的分组查询**

假设有以下数据表`user_info`,字段包括`id`、`username`、`email`、`role`。我们需要计算不同角色的用户数量及其平均邮箱数量。以下是查询步骤:

1. 写出基本框架: ```sql select role, count(id) as user_count, avg(email) as avg_email from user_info group by role having count(id) > 1 order by user_count desc ``` 2. 分析筛选条件:`having count(id) > 1`用于筛选每个角色下用户数量大于1的记录。这里的筛选条件依赖于`group by`后的`count(id)`,因此必须放在`having`子句中。 3. 执行查询,结果会显示不同角色的用户数量及对应的平均邮箱数量,并按用户数量排序。

转载地址:http://ixbfk.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_02---大数据之Nifi工作笔记0034
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NIO_通道之间传输数据
查看>>
NIO三大组件基础知识
查看>>
NIO与零拷贝和AIO
查看>>