⑴ sql如何对分组后运算出来的结果进行排序
提供两种方案,第一种是降序
select sno,avg(grade) 'nihao' from sc
group by sno order by 'nihao' desc
第二种是升序
select sno,avg(grade) 'nihao' from sc
group by sno order by 'nihao' asc
其中‘nihao’表示avg(grade)这个列的别名
⑵ sql语句 在分组内排序
只能用存储过程
思路如下
将分组那个字段比如是A
Create temp table tmp_b
foreach
select distinct A into bianlianga from table
insert into tmp_b
select top 2 B from table where A=bianlianga order by B ;
delete from table where A=bianlianga and B in(select * from tmp_b);
end foreach
⑶ sql 分组后排序
select*,ROW_NUMBER()over(partitionby品牌orderby市场份额desc)as排名FROM市场份额表
⑷ 使用sql的分组函数之后,怎样在被分组的数据
sqlserver 分组函数,请参阅:
sqlserver分组开窗函数的用法
用这些函数,分组后,可以实现分组内部编号排序,例:
createtableA([姓名]nvarchar(20),[订单数]int,[订单日期]datetime)
go
insertintoA([姓名],[订单数],[订单日期])values('www.maomao365.com',1900,'2014-5-6')
insertintoA([姓名],[订单数],[订单日期])values('www.maomao365.com',1800,'2018-5-6')
insertintoA([姓名],[订单数],[订单日期])values('www.maomao365.com',1800,'2018-5-6')
insertintoA([姓名],[订单数],[订单日期])values('小张',100,'2013-5-6')
insertintoA([姓名],[订单数],[订单日期])values('小明',2600,'2013-1-6')
insertintoA([姓名],[订单数],[订单日期])values('小明',1800,'2013-5-6')
insertintoA([姓名],[订单数],[订单日期])values('小李',888,'2017-3-6')
go
/*row_number返回分组后的连续排序,不会出现重复的排序值*/
selectrow_number()over(partitionby[姓名]orderby[订单日期]desc)askeyId,*fromA
/*rank返回分组后的连续排序,会出现跳跃排序值*/
selectrank()over(partitionby[姓名]orderby[订单日期]desc)askeyId,*fromA
/*dense_rank返回分组后的连续排序,不会出现跳跃排序值,但是会出现重复的排序值*/
selectdense_rank()over(partitionby[姓名]orderby[订单日期]desc)askeyId,*fromA
go
truncatetableA
droptableA
⑸ sql 分组内排序
就用select * from table1 order by 字段1,字段2就行了
第一个字段会按分组排好
⑹ 在SQL语句中,分组用什么子句,排序用什么子句
排序采用ORDER BY语句:ORDER BY 语句用于根据指定的列对结果集进行排序。ORDER BY 语句默认按照升序对记录行排序。如果希望按照降序对记录进行排序,可以使用 DESC关键字。
SQL有两种使用方式:
一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。
另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。
(6)SQL中分组后怎样小组内排序扩展阅读:
以同一种语法结构提供两种使用方式:
SQL既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接输入SQL命令对数据库进行操作。作为嵌入式语言,SQL语句能够嵌入到高级语言(如C、 C#、JAVA)程序中,供程序员设计程序时使用。
而在两种不同的使用方式下,SQL的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的操作方式,为用户提供了极大的灵活性与方便性。
⑺ sql语句 按一列分组 然后再按别一列组内排序
sql 按 group 单纯的对unitname 分组查询后 是 "统计数据" ,不存在组内情况,并不会带有 voucherID,不能排序,对 voucherID 的排序也是无意义。
或者说你按 unitname、voucherID 俩个分组,然后 按voucherID 排序,这个是可以实现的。
⑻ SQL如何对分组后的结果进行排序并且取前几名
SQL取分组中的前几名
[sql] www.2cto.com
create table #aa(class varchar(10),name varchar(10),lang int,math int)
go
insert into #aa
select '1','a1',60,70
union all
select '1','a2',80,70
union all
select '1','a3',90,70
union all
select '1','a4',50,70
go
insert into #aa
select '2','b1',60,70
union all
select '2','b2',90,90
union all
select '2','b3',90,70
union all
select '2','b4',50,70
go
select * from #aa
--取每年级前一名的成级
select * from
(select ROW_NUMBER() over(partition by class order by lang+math desc) rr, * from #aa ) a
where rr<2
--取每年级前二名的成级
select * from
(select ROW_NUMBER() over(partition by class order by lang+math desc) rr, * from #aa ) a
where rr<3
⑼ sql将数据分组,给每一组数据排序
select * from table group by row1 order by row2
再设置自增字段,这个应该在数据录入的时候通过触发器实现,本人搞不定
⑽ sql 如何分组排序同时进行
1、首先输入代码:
SELECT * FROM (select * from CJ where Gender='女') m
where( select COUNT(*) from (select * from CJ where Gender='女') n
where m.Classid = n.Classid and n.English > m.English)<2
order by Classid, English desc
2、然后再输入代码:
SELECT * FROM CJ m
where(
select COUNT(*) from CJ n
where m.Classid = n.Classid and n.English > m.English and n.Gender='女')<2 --指的是内表
and Gender='女' --指的是外表
order by Classid, English desc