Sma*_*ery 1912
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
Run Code Online (Sandbox Code Playgroud)
group by仅在主题列上使用a 时; 说:
select Subject, Count(*)
from Subject_Selection
group by Subject
Run Code Online (Sandbox Code Playgroud)
你会得到类似的东西:
Subject Count
------------------------------
ITB001 5
MKB114 2
Run Code Online (Sandbox Code Playgroud)
...因为ITB001有5个条目,MKB114有2个条目
如果我们是group by两列:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
Run Code Online (Sandbox Code Playgroud)
我们会得到这个:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
Run Code Online (Sandbox Code Playgroud)
这是因为,当我们按两列分组时,它会说"将它们分组以便所有具有相同主题和学期的人在同一组中,然后计算所有聚合函数(Count,Sum,Average等). )对于每个群体".在这个例子中,事实证明了这一点,当我们计算它们时,有三个人在第一学期做ITB001,两个人在第二学期做这个.做MKB114的人都在第一学期,所以没有第二学期的行(没有数据适合"MKB114,第二学期"组)
希望这是有道理的.
S. *_*yol 28
该GROUP BY子句与聚合函数结合使用,以按一列或多列对结果集进行分组.例如:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Run Code Online (Sandbox Code Playgroud)
记住这个顺序:
1)SELECT(用于从数据库中选择数据)
2)FROM(子句用于列出表)
3)WHERE(子句用于过滤记录)
4)GROUP BY(子句可以在SELECT语句中用于跨多个记录收集数据并按一列或多列对结果进行分组)
5)HAVING(子句与GROUP BY子句结合使用,将返回行组限制为条件为TRUE的那些行)
6)ORDER BY(关键字用于对结果集进行排序)
如果使用聚合函数,则可以使用所有这些,这是必须设置的顺序,否则可能会出错.
聚合函数是:
MIN返回给定列中的最小值
SUM返回给定列中数值的总和
AVG返回给定列的平均值
COUNT返回给定列中的值的总数
COUNT(*)返回表中的行数
| 归档时间: |
|
| 查看次数: |
982866 次 |
| 最近记录: |