我理解 "GROUP BY x "的意义。
但是GROUP BY x, y是如何工作的,它的含义是什么?
GROUP BY x, y
按X分组意味着将所有X值相同的人放在一个组中。
按X分组
`按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 "时,比如说。
select Subject, Count(*) from Subject_Selection group by Subject
你会得到这样的结果。
Subject Count ------------------------------ ITB001 5 MKB114 2
...因为ITB001有5个条目,而MKB114有2个。
如果我们通过两列来 "分组"。
select Subject, Semester, Count(*) from Subject_Selection group by Subject, Semester
我们会得到这样的结果。
Subject Semester Count ------------------------------ ITB001 1 3 ITB001 2 2 MKB114 1 2
这是因为,当我们按两列分组时,它是在说"将他们分组,使所有具有相同科目和学期的人都在同一个组中,然后计算所有的聚合函数(计数、总和、平均数等)这些组"。在这个例子中,这表现在,当我们计算时,有个人在第一学期做ITB001,有个在第二学期做。做MKB114的两个人都是在第一学期,所以没有第二学期的行(没有数据符合"MKB114, Semester 2"组的要求)。
希望这有意义。
GROUP BY "子句与聚合函数一起使用,按一个或多个列对结果集进行分组,例如。
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
记住这个顺序。
SELECT(用于从数据库中选择数据 FROM (子句用于列出表) WHERE(子句用于过滤记录 GROUP BY(子句可在SELECT语句中用来收集数据 跨越多个记录,并通过一个或多个列对结果进行分组) HAVING(子句与GROUP BY子句结合使用,用于 HAVING(子句与GROUP BY子句结合使用,将返回的记录组限制为只有那些条件为TRUE的记录。 条件为 "true "的行) ORDER BY (关键字用于对结果集进行排序)
SELECT(用于从数据库中选择数据
FROM (子句用于列出表)
WHERE(子句用于过滤记录
GROUP BY(子句可在SELECT语句中用来收集数据 跨越多个记录,并通过一个或多个列对结果进行分组)
HAVING(子句与GROUP BY子句结合使用,用于
HAVING(子句与GROUP BY子句结合使用,将返回的记录组限制为只有那些条件为TRUE的记录。 条件为 "true "的行)
ORDER BY (关键字用于对结果集进行排序)
如果你使用聚合函数,你可以使用所有这些,这是必须设置的顺序,否则你会得到一个错误。
聚合函数是。
MIN返回给定列中最小的值 SUM 返回给定列中的数值之和 AVG返回给定列中的平均值 COUNT 返回给定列中数值的总数 COUNT(*)返回表格中的行数
MIN返回给定列中最小的值
SUM 返回给定列中的数值之和
AVG返回给定列中的平均值
COUNT 返回给定列中数值的总数
COUNT(*)返回表格中的行数
按X分组
意味着将所有X值相同的人放在一个组中。`按X、Y分组'意味着将所有X和Y值相同的人放在一个组中。
用一个例子来说明,假设我们有以下表格,涉及到谁在大学里参加什么科目。
当你只对科目栏使用 "group by "时,比如说。
你会得到这样的结果。
...因为ITB001有5个条目,而MKB114有2个。
如果我们通过两列来 "分组"。
我们会得到这样的结果。
这是因为,当我们按两列分组时,它是在说"将他们分组,使所有具有相同科目和学期的人都在同一个组中,然后计算所有的聚合函数(计数、总和、平均数等)这些组"。在这个例子中,这表现在,当我们计算时,有个人在第一学期做ITB001,有个在第二学期做。做MKB114的两个人都是在第一学期,所以没有第二学期的行(没有数据符合"MKB114, Semester 2"组的要求)。
希望这有意义。
GROUP BY "子句与聚合函数一起使用,按一个或多个列对结果集进行分组,例如。
记住这个顺序。
如果你使用聚合函数,你可以使用所有这些,这是必须设置的顺序,否则你会得到一个错误。
聚合函数是。