首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于分组查询的sql语句求解,该怎么处理

2012-01-09 
关于分组查询的sql语句求解我的表及数据如下:idmczw1张三科长2张三科长3张三科长4张三科长5张三科长6张三

关于分组查询的sql语句求解
我的表及数据如下:
id         mc           zw
1           张三       科长
2           张三       科长
3           张三       科长
4           张三       科长
5           张三       科长
6           张三       科长
7           张三       科长
8           张三       科长
9           李四       科员
10         李四       科员
11         李四       科员
12         明明       科员
13         明明       科员
14         明明       科员
15         明明       科员
16         明明       科员
17         明明       科员
18         红红       副科长

其中有8行数据是张三,6行数据是明明,3行数据是李四,1行数据是红红
请问如何找到有最多行数的前两位,就是张三以及明明的所有数据。要求最后结果如下:
id         mc           zw
1           张三       科长
2           张三       科长
3           张三       科长
4           张三       科长
5           张三       科长
6           张三       科长
7           张三       科长
8           张三       科长
12         明明       科员
13         明明       科员
14         明明       科员
15         明明       科员
16         明明       科员
17         明明       科员

[解决办法]
不对
select * from [Table] where mc in
(select mc from
(select top 2 mc,count(1) from [Table] group by mc order by count(1) desc) a
)
[解决办法]
set nocount on
declare @a table(id int,F1 varchar(10), F2 varchar(10))
insert @a select 1 , '张三 ', ' 科长 '
union all select 2 , '张三 ', '科长 '
union all select 3 , '张三 ', '科长 '
union all select 4 , '张三 ', '科长 '
union all select 5 , '张三 ', '科长 '
union all select 6 , '张三 ', '科长 '
union all select 7 , '张三 ', '科长 '
union all select 8 , '张三 ', '科长 '
union all select 9 , '李四 ', '科员 '
union all select 10 , '李四 ', '科员 '
union all select 11 , '李四 ', '科员 '
union all select 12 , '明明 ', '科员 '
union all select 13 , '明明 ', '科员 '
union all select 14 , '明明 ', '科员 '
union all select 15 , '明明 ', '科员 '
union all select 16 , '明明 ', '科员 '
union all select 17 , '明明 ', '科员 '


union all select 18 , '红红 ', '副科长 '

select * from @a where f1 in(
select f1 from(
select top 2 f1,count(1) s from @a group by f1 order by count(1) desc
)aa
)

热点排行