SQL 查询总结及技巧

1、如何查找一个表中所有记录数大于2的记录,比如统计表tablename中按“字段”记录数大于2的所有记录

     select * from tablename where (select count(*) from tablename as a where a.字段=tablename.字段)>2

或  select * from (select 字段,count(*) from tablename group by 字段 having count(*)>1) as a inner join tablename as b on b.字段=a.字段

2、分组排序,获得分组内部每条记录的按大小序号

(1)、分组,并获得每个分组内排名前10的记录

create table #temp_8(id int identity(1,1),时间区间 INT,线路标识 int,方向编号 INT,断面客流量 int)
insert into #temp_8(时间区间,线路标识,方向编号,断面客流量) select 时间区间,线路标识,方向编号,断面客流量 from #temp_7  as a where 断面客流量 in (select top 10 断面客流量 from #temp_7 where 时间区间=a.时间区间  order by 断面客流量 desc) order by 时间区间

(2)、获得分组内每个记录的排名

select 时间区间,线路标识,方向编号,断面客流量,DENSE_RANK() OVER (PARTITION BY 时间区间 ORDER BY 断面客流量,线路标识,方向编号 desc)  from #temp_8

注意:DENSE_RANK() OVER (PARTITION BY 时间区间 ORDER BY 断面客流量,线路标识,方向编号 desc)

 

posted @ 2009-02-19 18:20  pjh123  阅读(251)  评论(0)    收藏  举报