我明白要点 GROUP BY x
但是如何
GROUP BY x, y
工作,这是什么意思呢?
我明白要点 GROUP BY x
但是如何
GROUP BY x, y
工作,这是什么意思呢?
Answers:
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在第一学期,所以没有第二学期的行(没有数据适合“ MKB114,第二学期”组)
希望这是有道理的。
GROUP BY A,B
相同GROUP BY B,A
?
GROUP BY a, b
,GROUP BY a AND b
由于第二个项目仅列出内容完全相同的分组项目,而没有“分组” ,因此之间存在差异。在这种情况下,输出将与第一个相同。
该GROUP BY
子句与聚合函数结合使用,以将结果集按一列或多列分组。例如:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
请记住以下顺序:
1)SELECT(用于从数据库中选择数据)
2)FROM(子句用于列出表)
3)WHERE(子句用于过滤记录)
4)GROUP BY(可在SELECT语句中使用子句来收集多个记录中的数据并将结果按一列或多列分组)
5)HAVING(子句与GROUP BY子句结合使用,将返回的行的组限制为条件为TRUE的行)
6)ORDER BY(关键字用于对结果集进行排序)
如果使用聚合函数,则可以使用所有这些,这是必须设置它们的顺序,否则可能会出错。
汇总函数为:
MIN返回给定列中的最小值
SUM返回给定列中数值的总和
AVG返回给定列的平均值
COUNT返回给定列中值的总数
COUNT(*)返回表中的行数