一个sql语句

bluezsh 2014-07-20 03:43:29
请教个sql问题吧,一张表,有字段: 部门、姓名 显示序号

A部门 张三1 001
A部门 张三2 002
A部门 张三3 003
A部门 张三4 004
B部门 李四1 005
B部门 李四2 006
B部门 李四3 007
B部门 李四4 008
我想显示出部门列表(去除重复)按照显示序号排序,并且统计出该部门下面有多少人,用一条sql如何实现啊?
输出成一个数组。
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloWordGirl 2014-07-21
  • 打赏
  • 举报
回复
select 部门, 人数 from ( select 部门, count(姓名) over(partition by 部门) 人数, row_number() over(partition by 部门 order by 数量) 排序, row_number() over(order by 数量) 排序1 from tabname ) tmp where 排序 = 1 order by 排序1;
向东流 2014-07-21
  • 打赏
  • 举报
回复
引用 3 楼 bluezsh 的回复:
[quote=引用 1 楼 blandwolf 的回复:] select 部门,count(*) from tb group by 部门
你这种方法不行,如果部门名称不规则,那么就不行。 我的例子里是规则的,例子没有做好。[/quote] 上点实际是数据看看
霜寒月冷 2014-07-21
  • 打赏
  • 举报
回复
if object_id('[tb]') is not null drop table [tb]
create table tb (class varchar(10),name varchar(7),id varchar(10))
insert into tb 
select 'A部门','张三1','001'union all                                       
select 'A部门','张三2','002'union all                                       
select 'A部门','张三3','003'union all                                       
select 'A部门','张三4','004'union all                                       
select 'B部门','李四1','005'union all                                       
select 'B部门','李四2','006'union all                                       
select 'B部门','李四3','007'union all                                       
select 'B部门','李四4','008'                                                
go
select class,count(class)as count from
(
select *,row_number() over(partition by class order by id asc) as rn from tb
)t group by class

--class	count
--A部门	4
--B部门	4
shiyiwan 2014-07-20
  • 打赏
  • 举报
回复
引用 3 楼 bluezsh 的回复:
我的例子里是规则的,例子没有做好。
select depart, cnt 
  from (
select depart, 
       count(name) over(partition by depart) cnt, 
       row_number() over(partition by depart order by displaynumber) subseq,
       row_number() over(order by displaynumber) seq
  from tab ) tmp 
 where subseq = 1
 order by seq;
bluezsh 2014-07-20
  • 打赏
  • 举报
回复
引用 1 楼 blandwolf 的回复:
select 部门,count(*) from tb group by 部门
你这种方法不行,如果部门名称不规则,那么就不行。 我的例子里是规则的,例子没有做好。
bluezsh 2014-07-20
  • 打赏
  • 举报
回复
请教个sql问题吧,一张表,有字段: 部门、姓名 显示序号 部门 张三1 001 A部门 张三2 002 A部门 张三3 003 C部门 张三4 004 B部门 李四1 005 B部门 李四2 006 D部门 李四3 007 B部门 李四4 008 我想显示出部门列表(去除重复)按照 "显示序号" 排序,并且统计出该部门下面有多少人,用一条sql如何实现啊? 输出成一个数组。
向东流 2014-07-20
  • 打赏
  • 举报
回复
select 部门,count(*) from tb group by 部门

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧