『壹』 sql語句 分組排序
你那圖片根本看不清,再補充下吧 ,把問題也說清楚點。。
『貳』 SQL 分組統計並排序
with tmp as
(select row_number() over(order by count(val)) as rn,val,count(val) as cnum from table1 group by val)
select * from tmp where rn<3
要想區別並列現象還要復雜一些,可能簡單的語句解決不了
『叄』 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分組匯總排序
華子,我來看你.....
『伍』 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分組排序
group
by語句必須和聚合函數一起使用.
select
c,max(d)
from
a
group
by
c
order
by
max(d)
desc
這樣子可以.
因為一條SELECT語句只可以返回一個結果集...
此句返回按c分組後並按每組中最大的d值進行排序.
『柒』 sql 分組排序
沒有計算機理解的順序,必需構造一個表示順序的函數。完整的實現語句如下:
select *,
case check_id
when 4 then 1
when 2 then 2
else check_id*10
end as def_order
from 表 order by def_order,idate
這里用CASE函數定義一個新的順序,如果check_id=4,新的排序號為1;如果check_id=2,新的排序號為2;如果check_id為其它,新的排序號為check_id*10,這樣能滿足要求的順序。
樓上的兄弟的解決方案,從理論上不能保證滿足要求,因為查詢輸出記錄的順序不一定是記錄輸入表的順序。
『捌』 Sql分組排名
sybase 沒有top 10吧。
用set rowcount 10
select * from table T where T.a in
(
set rowcount 10
select a from table where b=T.b order by a DESC
set rowcount 0
)
至於關鍵字是不是加[]記不清了。一直沒用過這樣的表名
--補充
你sql寫的怪怪的,是不是下面這意思
set rowcount 10
select *
from table
order by a desc
set rowcount 0
『玖』 SQL分組排序
create table #a (a char(10),b int)
insert #a select 'a',1
insert #a select 'a',5
insert #a select 'b',1
insert #a select 'b',4
insert #a select 'b',3
insert #a select 'b',5
create table #c (id int identity(1,1), a varchar(10))
insert into #c select distinct a from #A
create table #d (id int , a varchar(10),b int)
declare @a int
declare @b int
select @a=min(id) from #c
select @b=max(id) from #c
while (@a<=@b)
begin
select identity(int,1,1) as id , t1.a,t1.b into #b from #a t1, #c t2 where t1.a=t2.a and t2.[id]=@a order by t1.b
insert into #d
select * from #b
drop table #b
set @a=@a+1
end
select * from #d
『拾』 sql 分組和排序
如果是SQLServer 2005以上可以這樣寫
select 學生ID、課程編號、成績 from
(select 學生ID、課程編號、成績 ,row_number(partition by 課程編號 order by 課程編號,成績)as rn from student) as T where rn <=2 order by 課程編號、成績