不使用group by查询条数

老骥伏枥志在千里o 2014-08-08 03:21:35
a表
列1:车票名称ID
列2:车票名称
列3:制单人
列4:订单号
数据:
列1 列2 列3 列4
id1 name1 A No001
id1 name1 A No002
id1 name1 B No003
id1 name1 C No004
id2 name2 C No004
id1 name1 C No004
我想要知道 当前制单人订过的名称最多的车票 前5条; 前提不使用group by
...全文
160 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-08-08
  • 打赏
  • 举报
回复
引用 5 楼 shiyong7682719 的回复:
引用 2 楼 Tiger_Zhao 的回复:
不做动态统计就需要维护一个统计表(制单人,名称,数量),实时更新。
是的 这个表就是用来统计数据的,然后就讨论起来了group by影响性能的问题;
我是说实时更新,每次更改a表时都更新相应的统计记录。 所以没有 GROUP BY 的!
专注or全面 2014-08-08
  • 打赏
  • 举报
回复
不知道意思是不是要使用窗口函数? select distinct col1, COUNT(1)over(partition by col1) as count1,col3 from #temp where col3='C' order by count1 desc 使用窗口函数的话,可以一次性查询出聚合值和非分组列,因为有些查询同时需要聚合结果和基础列信息 就比如是学生信息表中,同时需要学生的各科分数个班级平均分 第一次聚合出来(不同)班级和(不同)平均分字段,再连接一次表取得每个学生的单个成绩和班级平均分 利用窗口函数的话一次性就可以取出来这些结果集,减少表关联, oracle中有优化过,三个不到十万条的表,可以从几秒钟减少到0.几秒
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
不做动态统计就需要维护一个统计表(制单人,名称,数量),实时更新。
是的 这个表就是用来统计数据的,然后就讨论起来了group by影响性能的问题;
發糞塗牆 2014-08-08
  • 打赏
  • 举报
回复
不排除group by会影响性能,因为需要排序,但是不是说会影响性能就不能用,游标也影响性能啊,为什么到今时今日还不取消,因为它有自己的应用环境,不能一刀切
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
不使用group by的理由是什么?
是啊,我也纠结 但是公司里的某某 说group by影响性能! 我就
Tiger_Zhao 2014-08-08
  • 打赏
  • 举报
回复
不做动态统计就需要维护一个统计表(制单人,名称,数量),实时更新。
發糞塗牆 2014-08-08
  • 打赏
  • 举报
回复
不使用group by的理由是什么?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧