⑴ 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