现有员工表t_staff
staff_id(员工标识) staff_name(员工名称) dept_id(部门标识) 希望能统计出每个部门的人数,和部门里员工标识最小的3个员工的名字,他们的名字用逗号连接起来。如何用一次分组就把这些信息求出来?
staff_id(员工标识) staff_name(员工名称) dept_id(部门标识) 希望能统计出每个部门的人数,和部门里员工标识最小的3个员工的名字,他们的名字用逗号连接起来。如何用一次分组就把这些信息求出来?
解决方案 »
- 本地sql数据库定时读取远程oracle数据库的问题?
- 同一字段中,多个相同的数据,我只要一个,请问应该用哪个函数
- 小弟跪求!想导出oracle中一个表的部分列,请高手们帮忙啊
- 问个简单的问题!
- 请问如何填写这个oracle的jdbc串?
- 怎样能选出所有的重复行(包含自己本行)
- 我怎么知道我IMPORT的结果对不对.
- internal客户端登陆不上
- 如何查看oracle中数据库名?
- EM RemoteOperationException: ERROR: Invalid username and/or password
- Convert Mysql to Oracle使用的问题
- 如何获取同一个表中两个字段数据的并集
-try it
select dept_id, cn, wm_concat(start_name)
from (select staff_id,
staff_name,
dept_id,
count(*) over(partition by dept_id order by 1) cn,
row_number() over(partition by dept_id order by staff_id) rn
from t_staff)
where rn <= 3
order by dept_id, cn
----------写错了,应该是group by
select dept_id, cn, wm_concat(start_name)
from (select staff_id,
staff_name,
dept_id,
count(*) over(partition by dept_id order by 1) cn,
row_number() over(partition by dept_id order by staff_id) rn
from t_staff)
where rn <= 3
group by dept_id, cn
select dept_id,wm_concat(staff_name) staff_name,max(cnt) cnt
from (select dept_id,staff_name,
row_number() over(partition by dept_id order by staff_id) rn,
count(*) over(partition by dept_id order by dept_id) cnt
from t_staff)
group by dept_id
--一次是不可能select dept_id,wm_concat(staff_name) staff_name,max(cnt) cnt
from (select dept_id,staff_name,
row_number() over(partition by dept_id order by staff_id) rn,
count(*) over(partition by dept_id order by dept_id) cnt
from t_staff)
where rn<=3
group by dept_id