首页 > 数据库 > mysql教程 > SQL中GROUP BY x, y如何对数据进行粒度分组?

SQL中GROUP BY x, y如何对数据进行粒度分组?

DDD
发布: 2025-01-22 05:32:09
原创
499 人浏览过

How Does GROUP BY x, y Granularly Group Data in SQL?

深入理解SQL中的GROUP BY x, y语句

SQL中的GROUP BY x语句用于根据指定列x的公共值对记录进行分组。扩展此概念,GROUP BY x, y表示更细粒度的分组,其中记录不仅根据列x中的值进行分组,还根据列y中的值进行分组。

工作原理

这种分组有效地将数据分成不同的集合。每个集合包含对x和y都具有相同值的记录。例如:

  • GROUP BY Subject根据Subject列中的唯一值对数据进行分类。
  • GROUP BY Subject, Semester进一步根据SubjectSemester列中值的唯一组合划分这些组。

示例

考虑以下Subject_Selection表:

<code>+---------+----------+----------+
| Subject | Semester | Attendee |
+---------+----------+----------+
| ITB001  |        1 | John     |
| ITB001  |        1 | Bob      |
| ITB001  |        1 | Mickey   |
| ITB001  |        2 | Jenny    |
| ITB001  |        2 | James    |
| MKB114  |        1 | John     |
| MKB114  |        1 | Erica    |
+---------+----------+----------+</code>
登录后复制

应用GROUP BY Subject对科目进行分组并计算出席人数:

<code class="language-sql">select Subject, Count(*)
from Subject_Selection
group by Subject</code>
登录后复制

输出:

<code>+---------+-------+
| Subject | Count |
+---------+-------+
| ITB001  |     5 |
| MKB114  |     2 |
+---------+-------+</code>
登录后复制

扩展到GROUP BY Subject, Semester

<code class="language-sql">select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester</code>
登录后复制

输出:

<code>+---------+----------+-------+
| Subject | Semester | Count |
+---------+----------+-------+
| ITB001  |        1 |     3 |
| ITB001  |        2 |     2 |
| MKB114  |        1 |     2 |
+---------+----------+-------+</code>
登录后复制

此结果表明,有三名学生在第一学期选修ITB001,两名学生在第二学期选修ITB001,而两名学生在第一学期选修MKB114。

通过对多列进行分组,您可以提取更具体的见解,并更详细地分析数据。

以上是SQL中GROUP BY x, y如何对数据进行粒度分组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板