不知道意思是不是要使用窗口函数?
select distinct col1, COUNT(1)over(partition by col1) as count1,col3 from #temp where col3='C'
order by count1 desc
使用窗口函数的话,可以一次性查询出聚合值和非分组列,因为有些查询同时需要聚合结果和基础列信息
就比如是学生信息表中,同时需要学生的各科分数个班级平均分
第一次聚合出来(不同)班级和(不同)平均分字段,再连接一次表取得每个学生的单个成绩和班级平均分
利用窗口函数的话一次性就可以取出来这些结果集,减少表关联,
oracle中有优化过,三个不到十万条的表,可以从几秒钟减少到0.几秒