深入理解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
进一步根据Subject
和Semester
列中值的唯一组合划分这些组。示例
考虑以下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中文网其他相关文章!