当前位置: 首页 > 面试题库 >

在多列上使用分组依据

锺离卓
2023-03-14
问题内容

我明白这一点GROUP BY x

但是GROUP BY x, y,它是如何工作的,又意味着什么呢?


问题答案:

Group By X意味着 将所有具有相同X值的那些放在一组

Group By X, Y意味着 将所有具有相同X和Y值的那些放在一组中

为了举例说明,假设我们有一个下表,该表与谁在大学里修读什么科目有关:

Table: Subject_Selection

+---------+----------+----------+
| Subject | Semester | Attendee |
+---------+----------+----------+
| ITB001  |        1 | John     |
| ITB001  |        1 | Bob      |
| ITB001  |        1 | Mickey   |
| ITB001  |        2 | Jenny    |
| ITB001  |        2 | James    |
| MKB114  |        1 | John     |
| MKB114  |        1 | Erica    |
+---------+----------+----------+

group by仅在主题列上使用a时;说:

select Subject, Count(*)
from Subject_Selection
group by Subject

您将获得类似以下内容的信息:

+---------+-------+
| Subject | Count |
+---------+-------+
| ITB001  |     5 |
| MKB114  |     2 |
+---------+-------+

…因为ITB001有5个条目,MKB114有2个条目

如果我们要到group by两列:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

我们会得到这个:

+---------+----------+-------+
| Subject | Semester | Count |
+---------+----------+-------+
| ITB001  |        1 |     3 |
| ITB001  |        2 |     2 |
| MKB114  |        1 |     2 |
+---------+----------+-------+

这是因为,当我们按两列分组时,是说 “将它们分组,以便所有具有相同主题和学期的人都在同一组中,然后计算所有聚合函数 (计数,总和,平均值等)。 )
对于每个这些基团”的 。在这个例子中,这是由事实证明,当我们指望他们,有 3 人在第一学期做ITB001和 2
做在学期2.两者的人做MKB114在第一学期,所以没有第2学期的行(没有数据适合“ MKB114,第2学期”组)

希望这是有道理的。



 类似资料:
  • 使用 分配给多个列的最佳方法是什么?例如: 我想这样做(当然这个语法是不正确的): 为了扩展这一点,我可能将许多列的名称存储在一个变量中(比如< code>col_names),我想这样做: 这样做的正确方法是什么?

  • 问题内容: 如该问题所述,我试图制定一个查询,该查询在列结果中包含一个case语句,然后我想将该列包含在查询的group by语句中。举一个具体的例子,这几乎是我查询的样子: 在来到这里之前,我检查了一些网站,包括该网站,以尝试解决我的问题。我尝试在链接的网页中显示“ like”之后添加另一个别名,但是没有运气。我继续收到的错误消息如下: 是否还有其他人遇到我所面临的问题,并且能够在声明的结果上使

  • 问题内容: 我有如下的SQL: 并得到结果: 我想总结每个部门的学生人数,如下所示: 我该如何编写sql? 问题答案: 尽管您似乎并未显示所有表格,但我只能假设还有每位学生的实际入学表格 如果您想要与每个学生相关联的每个部门的总数(这没有意义),则可能必须这样做… 我对“姓名”列的解释是学生的姓名,而不是班级实际讲师的姓名,因此,我进行子选择/加入。否则,就像其他人一样,只需要使用COUNT(*)

  • 问题内容: 只是对SQL语法感到好奇。所以如果我有 这将是不正确的,因为 真的应该是 但是为什么我们不能仅仅为了方便而使用前者呢? 问题答案: 就像按以下顺序执行查询一样实现SQL: FROM子句 WHERE子句 GROUP BY子句 HAVING子句 SELECT子句 ORDER BY子句 对于大多数关系数据库系统,此顺序说明了哪些名称(列或别名)有效,因为它们必须在上一步中引入。 因此,在Or

  • 问题内容: 我正在使用H2-DB访问静态数据库… 我有一张桌子,看起来像: 它的名单很多,有很多国家,其中大多数只有国家和州(例如德国在这里,而州是城市),也有一个城市(在这里是美国)… 问题是现在,当我查询 为了得到州(或城市)的排序列表,我收到一条错误消息,说 如果该行有一个城市,我需要整行,否则我只需要State列,但是查询后我可以知道,是否使用了city列,所以我必须查询“ *”的“ ST

  • 问题内容: 我的mysql数据库中有一个表,该表有两列:组和子组。见下文。 我正在尝试获取每个唯一的夫妇组/子组的记录数。 这是我期望的: 阅读一些帖子后,我尝试使用count()的group by尝试了几个sql查询,但是我无法获得预期的结果。我怎样才能解决这个问题? 问题答案: 我认为您正在寻找: