搜索
简帛阁>技术文章>MySQL 分组(GROUP BY)

MySQL 分组(GROUP BY)

语法格式:

GROUP BY { <列名> | <表达式> | <位置> } [ASC | DESC]

<列名>:指定用于分组的列。可以指定多个列,彼此间用逗号分隔。
<表达式>:指定用于分组的表达式。通常与聚合函数一块使用,例如可将表达式COUNT(*) AS ' 人数 '作为 SELECT 选择列表清单的一项。
<位置>:指定用于分组的选择列在 SELECT 语句结果集中的位置,通常是一个正整数。例如,GROUP BY 2 表示根据 SELECT 语句列清单上的第 2 列的值进行逻辑分组。
ASC|DESC:关键字 ASC 表示按升序分组,关键字 DESC 表示按降序分组,其中 ASC 为默认值,注意这两个关键字必须位于对应的列名、表达式、列的位置之后。

注意:GROUP BY 子句中的各选择列必须也是 SELECT 语句的选择列清单中的一项。

对于 GROUP BY 子句的使用,需要注意以下几点:

  • GROUP BY 子句可以包含任意数目的列,使其可以对分组进行嵌套,为数据分组提供更加细致的控制。
  • GROUP BY 子句列出的每个列都必须是检索列或有效的表达式,但不能是聚合函数
  • 若在 SELECT 语句中使用表达式,则必须在 GROUP BY 子句中指定相同的表达式。
  • 除聚合函数之外,SELECT 语句中的每个列都必须在 GROUP BY 子句中给出。
  • 若用于分组的列中包含有 NULL 值,则 NULL 将作为一个单独的分组返回;若该列中存在多个 NULL 值,则将这些 NULL 值所在的行分为一组。
实例:

根据 dept_id 对 tb_students_info 表中的数据进行分组,将每个学院的学生姓名显示出来,输入的SQL语句和执行结果如下所示。

mysql> SELECT dept_id,GROUP_CONCAT(name) AS names
    -> FROM tb_students_info
    -> GROUP BY dept_id;
+---------+---------------+
| dept_id | names         |
+---------+---------------+
|       1 | Dany,Jane,Jim |
|       2 | Henry,John    |
|       3 | Green,Thomas  |
|       4 | Susan,Tom     |
|       6 | Lily          |
+---------+---------------+
5 rows in set (0.02 sec)
语法格式:GROUPBY{<列名>|<表达式>|<位置>}[ASC|DESC]<列名>:指定用于分组的列。可以指定多个列,彼此间用逗号分隔。<表达
分组数据概念按照指定条件筛选部分组来由如果不用分组那么聚集函数只会对整个列进行聚集但是如果想对一列中分组聚集呢?比如一列中同一个值的算一组然后对每组进行聚集运算用例SELECTvend_id,COUN
在MySQLSELECT语句中,允许使用GROUPBY子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,实现对每个组而不是对整个结果集进行整合。语法格式如下:GROUPBY{
数据分组GROUPBYGROUPBY可以根据一个或多个字段进行分组。比如,根据prod_id分组:SELECTprod_id,user_idFROMproductsGROUPBYprod_id注意:1
天有个需求对数据库的数据进行去重排名,同一用户去成绩最高,时间最短,参与活动最早的一条数据进行排序。我们可以利用MySQL中的groupby的特性。MySQL的groupby与Oracle有所不同,
分组查询关键字:groupby后面根列名,通常和聚合函数一起使用聚合函数:max(列名)统计该列的最大值min(列名)统计该列的最大值avg(列名)统计该列的平均值sum(列名)统计该列的和count
源代码实例:工资统计表SELECTwages_headerbill_date,wages`name`,SUM(wagesmoney)ASmoneysFROMwages_headerLEFTJOINwa
1先说一下sql语句的执行顺序(8)SELECT(9)DISTINCT(11)<TopNum><selectlist>(1)FROM[left_table](3)<joi
于GROUPBY实际上也同样会进行排序操作,而且与ORDERBY相比,GROUPBY主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算。所
SQL语法的规定,用了groupby,则select之后的字段除聚合函数外都必须出现在groupby中,你可以少于groupby中的字段,但不能包含groupby中没有的字段SELECTSubject