热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql和oracle排序_MySQL、SQLServer、Oracle分组排序

1.MySQL:1.聚集函数:max(),min(),avg(),sum(),count()在分

1. MySQL:

1.聚集函数:max(),min(),avg(),sum(),count()

在分组上应用聚集函数。

2.聚合函数对应于每组的数据:即max(id) 每组最大的id

3.having 是group by分组后的结果集再加的条件(having相当于Where 但只能在group by后,条件可以是聚合函数(真实表中可能不存在的数据))。

例如:

SELECT

*

FROMtb_chatlogWHEREchatidIN ( SELECT max( Chatid ) maxId FROM tb_chatlog WHERE LoginUser = '*******' GROUP BY LoginUser, BuyerName );

select 后可以出现任意字段,并不是非得分组的字段。

分组字段越多,数据越少,分组排序一般都是获取组内排序后的某个值(最大id值),这是可以合理分配分组字段和聚合函数得到最大id集合,再根据子查询即可取得所需数据结果集。

2. SQLServer:

SQLserver 分组查询:

函数:ROW_NUMBER ( ) over

SQLserver中:group by 后的字段,在select 后可以出现,不在group by 的字段在select 只能使用聚合函数。

SELECT

*

FROM(SELECTROW_NUMBER ( )over ( PARTITION BY LoginUser, BuyerName ORDER BY ChatTime DESC ) rowNums,*

FROMtb_chatlogWHERELoginUser= '丰达盛伟服饰专营店'

AND ChatTime >= '2019-07-07 00:00'

AND ChatTime <&#61; &#39;2019-07-17 23:59&#39;

AND Direction &#61; &#39;0&#39;) subGroupWHERErowNums&#61; &#39;1&#39;;

3. Oracle&#xff1a;

select * from(

select t.*, row_number() over(partition byF_ATTRACTIONID order by F_TIME desc ) rk from T_ATTRACTION_CG t WHERE t.F_TIME

where rk&#61;1

row_number() OVER(PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组&#xff0c;在分组内部根据 COL2排序&#xff0c;而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).

---------------------

参考&#xff1a;https://blog.csdn.net/xcymorningsun/article/details/52754065



推荐阅读
author-avatar
手机用户2602918611
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有