`
落地窗
  • 浏览: 437314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库查询时对多个字段group by 有什么作用

阅读更多
"group by 字段列表"

表示根据后面的字段来分组,如果只有1个字段,那只是根据这个字段的值来进行一次分组就可以了;若后面有多个字段,那表示根据多字段的值来进行层次分组,分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组;接着第2个字段值相同的记录中,再根据第3个字段的值进行分组......依次类推。

一.数据分组(group by ):

select 列a,聚合函数(聚合函数规范) from 表明

where 过滤条件

group by 列a

group by 字句也和where条件语句结合在一起使用。当结合在一起时,where在前,group by 在后。即先对select xx from xx的记录集合用where进行筛选,然后再使用group by 对筛选后的结果进行分组。

二.使用having字句对分组后的结果进行筛选,语法和where差不多:having 条件表达式

需要注意having和where的用法区别:

1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。

2.where肯定在group by 之前,即也在having之前。

3.where后的条件表达式里不允许使用聚合函数,而having可以。

三、当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:

1.执行where xx对全表数据做筛选,返回第1个结果集。

2.针对第1个结果集使用group by分组,返回第2个结果集。

3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。

4.针对第3个结集执行having xx进行筛选,返回第4个结果集。

5.针对第4个结果集排序。

例子:

完成一个复杂的查询语句,需求如下:

按由高到低的顺序显示个人平均分在70分以上的学生姓名和平均分,为了尽可能地提高平均分,在计算平均分前不包括分数在60分以下的成绩,并且也不计算贱人(jr)的成绩。

分析:

1.要求显示学生姓名和平均分

因此确定第1步select s_name,avg(score) from student

2.计算平均分前不包括分数在60分以下的成绩,并且也不计算贱人(jr)的成绩

因此确定第2步 where score>=60 and s_name!=’jr’

3.显示个人平均分

相同名字的学生(同一个学生)考了多门科目 因此按姓名分组

确定第3步 group by s_name

4.显示个人平均分在70分以上

因此确定第4步 having avg(s_score)>=70

5.按由高到低的顺序

因此确定第5步 order by avg(s_score) desc
分享到:
评论
1 楼 mc90716 2013-09-13  
引用
引用
引用
引用

相关推荐

    数据库按照指定多个字段去重复查询sql语句

    按照指定字段查询出出现重复的数据 SELECT m.* FROM dbo.Sheet1$ m,( SELECT ZCMC,ZCFL,XH FROM dbo.Sheet1$ GROUP BY ZCMC,ZCFL,XH HAVING COUNT(1)>1 ) AS m1 WHERE m.ZCMC=m1.ZCMC AND m.ZCFL=m1.ZCFL ...

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、查询出所有数据进行分组之后,和重复数据...

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    MySql Group By对多个字段进行分组的实现方法

    MySQL中的GROUP BY语句是用于对数据库表中的数据进行分组的重要工具,它根据一个或多个字段的值将记录归类。在多个字段上使用GROUP BY可以帮助我们更精确地分析和汇总数据,这对于数据报告、统计分析以及业务决策至...

    处理group by 查询速度慢的问题.docx

    该表包含了多个字段,具体如下: - `id`: varchar(36),主键; - `log_time`: bigint(20) unsigned,日志时间; - `device_id`: int(11),设备ID; - `stb_id`: int(11),STB ID; - `region_id`: int(11) unsigned...

    达梦数据库 程序员手册 sql 语言使用手册

    7. **视图**:视图是虚拟表,基于一个或多个表的查询结果。使用CREATE VIEW语句创建,如`CREATE VIEW view_name AS SELECT column1, column2 FROM table_name`。 8. **存储过程和函数**:这些是预编译的SQL语句集合...

    查询重复数据sql语句

    这种方法尤其适用于需要比较多个字段的情况。 - 示例:`SELECT * FROM a JOIN a b ON a.id = b.id WHERE a.id ;` 2. **使用窗口函数**: - 使用窗口函数(如`ROW_NUMBER()`、`RANK()`或`DENSE_RANK()`)可以更加...

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    首先,`ORDER BY`用于指定查询结果的排序方式,可以基于一个或多个列进行升序(ASC)或降序(DESC)排序。然而,Oracle数据库的`ORDER BY`默认并不保证排序的稳定性。这意味着在相同排序键值的情况下,多次执行相同...

    经典的SQL查询语句,将内容作为字段查询

    5. JOIN操作:当需要从多个表中获取信息时,JOIN语句就显得尤为重要。例如,`INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN`和`FULL OUTER JOIN`可以将两个或更多表的数据合并在一起,根据指定的关联条件。 6. 分组和聚合...

    sqlserver+group by分组查询分页存储过程

    根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...

    Oracle数据库表建立字段唯一性的方法

    - 如果需要确保多个字段的组合是唯一的,可以创建一个基于这些字段的复合唯一约束或索引。 6. **性能考虑** - 唯一约束在插入、更新和删除操作时会进行实时检查,可能会降低性能。而唯一索引则在查询时提供更快的...

    一篇文章带你了解数据库中group by的用法

    在数据库查询中,`GROUP BY`是一个至关重要的语句,它允许我们根据一个或多个字段对数据进行分组,并对每个分组执行聚合操作。这篇文章将深入探讨`GROUP BY`的用法,以及如何结合其他数据库语言元素如`ORDER BY`和`...

    SQL数据库查询技术

    2. 分组查询:`GROUP BY`语句按照一个或多个列对结果集进行分组,`HAVING`子句则在分组后进行条件筛选。 三、连接查询 1. 内连接:`INNER JOIN`返回两个表中匹配的记录,基于指定的连接条件。 2. 左连接:`LEFT ...

    数据库实验一 基于Sakila的数据库操作

    因为一个影片可能有多个语言版本,而一个语言也可能被多个影片使用,所以是多对多关系。虚线表示这种关系不是强制的,即并非所有film都需要有所有语言。 5. **SQL查询操作**: - 列出所有商店的详细信息:这通常...

    清晰解读GroupBy

    当我们需要根据多个字段进行分组时,可以将这些字段都放在`GROUP BY`子句中。 **示例3:GROUP BY name, number** ``` SELECT name, number FROM test GROUP BY name, number; ``` 这种情况下,每个不同的`name`和...

    mysql筛选GROUP BY多个字段组合时的用法分享

    当你需要根据多个字段的组合来分组数据时,可以在`GROUP BY`子句中列出这些字段。这种方式可以帮助你分析具有多重维度的数据,例如,你可能想根据产品类别和销售地区来统计销售额。 下面我们将详细讨论`GROUP BY`...

    SQL Server数据库查询速度慢原因及优化方法

    例如耽搁查询 的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作UPDATE,INSERT, DELETE还不能并行处理。 ...

    Server2005高效分页存储过程(支持多字段排序,支持Group By)

    3. **@OrderField**: 排序字段,可以指定多个字段,以逗号分隔。 4. **@WhereCondition**: 查询条件,用于指定过滤条件。 5. **@PageIndex**: 当前页码,默认值为1。 6. **@PageSize**: 每页记录数,默认值为20。 7....

    Sequelize中用group by进行分组聚合查询

    在SQL中,分组查询是通过`GROUP BY`子句来实现的,它可以将数据按照一个或多个列的值进行分组,通常结合聚合函数一起使用,以便对每个分组执行计算。 1. SQL中的分组查询 在SQL中,使用`GROUP BY`语句进行分组操作...

Global site tag (gtag.js) - Google Analytics