会一点数据库语言的都知道order by是排序,group by是分组,在进行统计数据的时候就会用到group by,没有在聚合函数里面的就必须在group by里,有时候order by和group by是一起使用的,order by里面的字段必须来源于group by,先使用分组后排序。、
1使用了orderby和group by组合的例子
create table TEST_TB_GRADE
(
id NUMBER(10) not null,
user_name VARCHAR2(20 CHAR),
course VARCHAR2(20 CHAR),
score FLOAT
)
2行变列且显示将不同科目按不同分数段进行统计
运行结果如下:
2使用了group by
select account,
(select count(*) from dispatch_info_bak0921 t1 where t1.operator= e.account )as dispatch_count,
(select count(*) from collective_contract t2 where t2.aae011 = e.account) as collective_count ,
(select count(*) from special_hours t3 where t3.aae011 = e.account)as special_count ,
(select count(*) from audit_result t4 where t4.review_user = e.account) as audit_count,
(select count(*) from contract_rollback_info t5 where t5.aae011 = e.account)as rollback_count
from ACCOUNT_AREA_CODE e
group by e.account
这里我不用group by也可以运行,只是数据是顺序是打乱的。
而且这个sql语句运行效率数据量大的时候,操作的是6张表的关联查询,就会很慢,我们可以用oracle的marge合并函数进行更新插入列操作,就不会每次操作6张表了。