2、group by 子句的将查询结果表按某一列或多列分组,值相等的为一组。对查询结果分组的目的是为了细化集函数的作用对象。如果未对查询结果分组,集函数将作用与整个查询结果。
(1)实验说明group的常见操作和错误
实验数据
SQL> select * from student;
ID CLASSNO NAME
---------- ---------- ------------------
1 1 张三
2 1 李四
3 1 王五
4 2 刘六
5 2 钱七
6 2 赵八
已选择6行。
问题1:查出一班的人数?
SQL> select count (*) from student where classno=1 group by classno;
COUNT(*)
----------
3
问题2:查人数的同时能不能把学生姓名也查出来呢?
SQL> select name ,count (*) from student where classno=1 group by classno;
select name ,count (*) from student where classno=1 group by classno
*
ERROR 位于第 1 行:
ORA-00979: 不是 GROUP BY 表达式