MySQL 使用 ORDER BY 和 GROUP BY

MySQL 使用 ORDER BY 和 GROUP BY

在使用 SQL 语句查询 MySQL 数据库时,ORDER BY 和 GROUP BY 是比较常用的两种语句,可以用来对查询结果进行排序和分组。那么如何同时使用这两种语句呢?本文将详细介绍如何在 MySQL 中使用 ORDER BY 和 GROUP BY 来完成数据排序和分组。

阅读更多:MySQL 教程

ORDER BY

ORDER BY 语句用于对查询结果进行排序,并可以根据需要指定排序方式(升序或降序)。其语法如下:

SELECT column FROM table ORDER BY column ASC|DESC;
SQL

其中,column 是需要排序的列名,可以是一个或多个。ASC 表示升序,DESC 表示降序,默认为升序。例如,对一个存储国家、首都和人口的表格进行升序排序:

SELECT * FROM country_population ORDER BY country ASC;
SQL

结果如下所示:

country capital population
Canada Ottawa 37.59
China Beijing 1401.76
France Paris 66.99
Germany Berlin 83.02

GROUP BY

GROUP BY 语句用于对查询结果进行分组,对某个列进行分组时会将拥有相同值的行放在一起。其语法如下:

SELECT column, AGG(column) FROM table GROUP BY column;
SQL

其中,column 是需要进行分组的列名,可以是一个或多个。AGG 是聚合函数,用于对分组后的数据进行统计,例如 COUNTSUMAVG 等。例如,对一个存储学生出生年月和成绩的表格按照出生年月进行分组,并计算每个年月对应的平均成绩:

SELECT birth_year_month, AVG(score) FROM student_scores GROUP BY birth_year_month;
SQL

结果如下所示:

birth_year_month AVG(score)
2001-01 79.0
2001-04 91.5
2002-03 82.0
2003-06 75.5

ORDER BY 和 GROUP BY 的联合使用

ORDER BY 和 GROUP BY 可以同时使用,使查询结果先进行分组,然后在每个分组内按照指定的条件进行排序。其语法如下:

SELECT column, AGG(column) FROM table GROUP BY column ORDER by column ASC|DESC;
SQL

例如,对一个存储学生出生年月和成绩的表格按照出生年月进行分组,并计算每个年月对应的平均成绩,并按照平均成绩进行降序排序:

SELECT birth_year_month, AVG(score) FROM student_scores GROUP BY birth_year_month ORDER BY AVG(score) DESC;
SQL

结果如下所示:

birth_year_month AVG(score)
2001-04 91.5
2001-01 79.0
2002-03 82.0
2003-06 75.5

总结

使用 ORDER BY 和 GROUP BY 可以对查询结果进行排序和分组,两种语句可以同时使用来对分组后的数据进行排序。在使用这两种语句时需要注意,排序的列应该是分组的列,或是分组列的聚合函数(例如平均值、总和等)。同时,需要注意使用适当的索引来提升查询性能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册