哥,你今天下午帮我回复了一个sql先分组后排序的问题的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哥,你今天下午帮我回复了一个sql先分组后排序的问题的相关的知识,希望对你有一定的参考价值。

我按照您的方式:select regtime,ccount,row_number()over(partition by case when ccount=0 then 0 else 1 end order by regtime) from 表
查询出来的是这样的:

现在有个问题是这样的,这边要让ccount!=0排在前面,ccount=0排在后面,应该怎么操作呢?谢谢大哥

select regtime,ccount,row_number()over(partition by case when ccount=0 then 0 else 1 end order by regtime) from  tmp
order by case when ccount=0 then 0 else 1 end  desc

来自:求助得到的回答
参考技术A select regtime,ccount,row_number()over(partition by case when ccount=0 then 0 else 1 end order by regtime) from 表 order by ccount

追问

大哥,这样不行

ccount=0的一组还是排在前面的呢,我想让ccount!=0的一组排在前面,ccount=0的一组排在后面

追答

ORDER BY ccount DESC

参考技术B 试试:
select regtime,ccount,row_number()over(partition by case when ccount=0 then 0 else 1 end order by regtime) from 表 order by ccount DESC

Sql sever 分组排序

    维护人事的时候人事局要求加入一个新功能,详细需求例如以下:加入的人员在同一个单位的依照顺序编号而且单位也要实现时间排序,也就是说有两个排序,第一单位名称排序。先创建的一直在前。然后依照创建时间依次排序,第二人员排序。每一个单位的人依照一定的编码进行排序。这里听了师哥的建议採用的是给每一个新加的单位独立编号,比方第一个创建的单位是1,然后依次是234···这样就能非常好的排序啦。这里我针对要操作的表新建了一个触发器。以此来实现这个功能。详细代码与说明例如以下。

--=============================================
--Author:                徐凤竹
-- Create date:2015年7月7日16:10:04
--Description:        插入数据时查看是否存在该单位名称,没有则加入单位名称,实现分组查看
--=============================================
ALTER TRIGGER[dbo].[trg_addoutstanding]
   ON [dbo].[T_OutstandingDispatch]
   AFTER INSERT,UPDATE
AS
declare
@myID varchar(50),
@mycompany varchar(50),
@mygroupid bigint,
@sum bigint,
@maxnum bigint
--在新插入内容中获取档案编号,单位名称
select @myID=number,@mycompany=companyName   frominserted
if update(companyName)
BEGIN
--在表中查看有同样单位名称的记录总数
[email protected]=COUNT(*) from T_OutstandingDispatch where companyName [email protected]
--查询表中最大的组号,以便为新单位编组号
[email protected]=MAX(groupID) from T_OutstandingDispatch
--查询同样单位的组号(存在)。以便为新单位编组号
selecttop 1 @mygroupid=groupID  fromT_OutstandingDispatch where companyName [email protected]
--假设有同样单位名称的记录大于1(排除自身),则给新单位赋予同样组号。否则按序编写新组号
if(@sum>1)
updateT_OutstandingDispatch  [email protected] where number   [email protected]
else
updateT_OutstandingDispatch  [email protected]+1 where number [email protected]
END


 

 

 



以上是关于哥,你今天下午帮我回复了一个sql先分组后排序的问题的的主要内容,如果未能解决你的问题,请参考以下文章

sql 分组排序

SQL 分组统计并排序

sql 怎么先分组再查询每组中前三天数据?

Mysql 分组并排序

SQL如何对分组后的结果进行排序并且取前几名

sql 分组内排序