码迷,mamicode.com
首页 > 数据库 > 详细

最近新明白的SQL小知识

时间:2017-01-23 20:32:24      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:--   如图所示   span   ges   tin   count   distinct   style   partition   

1.partition by和order by

技术分享

先看三个小需求:

①查询出各个类编号的书本的数量。

 select  count (类编号)   as 数量, 类编号
 from  Books  group by 类编号

结果如图所示,这个时候用的是group by。

技术分享

②查询出每一类编号中书的单价和。(例子:类编号为2的书的单价和)

     select distinct  sum (价格) over(partition by 类编号  order by 类编号 ) as 总价格 ,类编号
     from  Books 

结果如图所示,用的是partition by。

技术分享

③查询出每一类编号中价格最高的一本书。

   select * from
  (
   select ROW_NUMBER() over(partition by 类编号 order by 价格 desc) as rowID,类编号,书名,价格 from  Books 
    ) a where rowid=1        --切记一定要给括号里面的数据集合起一个别名,要不然一直报错

结果如下图所示,

技术分享

看完三个例子之后,总结一下:

group by是对检索结果的保留行进行单纯分组,一般总爱和聚合函数一块用例如AVG(),COUNT(),max(),main()等一块用。 而结果返回的一般只有一条反映统计值的记录

partition  by用于给结果集分组,能返回一个分组中的多条记录。

最近新明白的SQL小知识

标签:--   如图所示   span   ges   tin   count   distinct   style   partition   

原文地址:http://www.cnblogs.com/sdadx/p/6344810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!