我甚是理解你 我开始也很不明白 order by是排序 如order by id 表示按id 升序排列 order by id,num 表示优先按照id排序 id相同的再按num排序 这个意思 group by 是分组 首先用group by 的前提是你的select里边用了聚合函数如sum(),avg(),min(),max(
group by:指定将查询结果进行分组.groud_expression为分组表达式.用法:SQL>SELECT cPcode,cEname,cSex,cPhone FROM employee GROUP BY cPcode,cEname,cSex,cPhone(employee为表明,cPcode,cEname,cSex,cPhone为表的字段名)
group by 不是在任何是一个数据库语言中都一样嘛,当需要对查询结果进行分类的时候就需要啊:select * from student group by sex就是根据学生性别将查询结果分为两组(理论上两组,当然也有一组的情况,三组的就不知道了).
分组统计时候用.比如 select count(*) from tab where age<100 group by age;意思是年龄小于100的按照年龄来统计每个年龄的人数.select age ,count(*) from tab group by age having count(*)>1 统计年龄数大于1的人,唯一的年龄不统计在内
sum求和;avg求平均值;union 常在拼装结果时使用,比如:select 日期,sum(销量),avg(销量) from table group by 日期;求每日的销量总和和每日的销量均值;select sum(ab1),avg(ab1) from ( select a1 ab1,a2 ab2 from table1 union select b1 ab1,b2 ab2 from table2);
select count(*) from student group by 列group by 是分组,与聚合函数并列使用,不能没有聚合函数的情况下使用,如果有多个选择列,必须group by后面也跟列,如果加条件用HAVING
可以用函数,这条语句报错的原因是select后面的字段和group by后面的字段不同,改成select nickname,SUBSTR(nickname,0,3),sum(id) from simpletest group by SUBSTR(nickname,0,3);就可以了
没什么不一样啊,只是显示顺序的问题,你可以加一个order by deptno子句
这边count(id)和count(*)是等价的是说你group by 后,name相同的数据有2个不是说id相同
从感觉上来说,是先执行where查询符合条件的结果集,再执行order by,把查询出来的结果集进行排序.此问题设计到rdbms内部实现及其查询优化的问题,你执行一条sql语句时,rdbms的sql解析器会生成相应的执行树,按照执行树的顺序对底层存储的数据操作,而后返回处理结果.这里先执行哪一个子句、后执行哪一个子句是有sql解析器决定的,sql解析器会给出一条它认为最优的执行树.