由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 这个SQL面试题怎么做
相关主题
猎头招人,有经验的.NET开发人员Uber的offer接不接?
版上有找C#工作的吗?问个微软面试题
这两个职位哪个更有前途?问个google面试题
公司招聘BI reporting developer请教一道题
敲锣打鼓恭喜学习SQL的同学! (转载)请教个面试题
学习了SQL你能做哪些BI职位? (转载)请教个SQL的问题
最近报offer的人比较少[电话面试] 非死不可 2
内推sql reporting analyst (转载)SQL query 求解!
相关话题的讨论汇总
话题: direct话题: indirect话题: sql话题: mid话题: reporter
进入JobHunting版参与讨论
1 (共1页)
t*****e
发帖数: 1700
1
一个table,就两个field, ManagerID 和 direct Reporter ID
要求是得出每个manager下面的有多少direct和indirect reporters
z*******u
发帖数: 60
2
试着写了下self join:
select count(distinct dr.drid) as indr_cnt, count(distinct m.drid) as dr_cnt
, m.managerid
from table as dr
join table as m
on dr.managerid=m.drid
group by m.managerid
q****x
发帖数: 7404
3
direct:
select ManagerId, count(ReporterId)
from table
group by 1
indirect:
i wonder if sql can do this.

【在 t*****e 的大作中提到】
: 一个table,就两个field, ManagerID 和 direct Reporter ID
: 要求是得出每个manager下面的有多少direct和indirect reporters

q****x
发帖数: 7404
4
can this query count n-level indirect reports?

cnt

【在 z*******u 的大作中提到】
: 试着写了下self join:
: select count(distinct dr.drid) as indr_cnt, count(distinct m.drid) as dr_cnt
: , m.managerid
: from table as dr
: join table as m
: on dr.managerid=m.drid
: group by m.managerid

e*******s
发帖数: 1927
5
这个应该得用recursion

【在 q****x 的大作中提到】
: can this query count n-level indirect reports?
:
: cnt

h*d
发帖数: 19309
6
single query肯定不行,可以搞temp table什么的一层一层递归?

【在 q****x 的大作中提到】
: can this query count n-level indirect reports?
:
: cnt

l*********8
发帖数: 4642
7
一个公司的管理层次也就几层到十几层吧?
用个比较土的sql也应该能写出来。

【在 e*******s 的大作中提到】
: 这个应该得用recursion
e*******s
发帖数: 1927
8
问题是不知道有多少层啊, 算是unbounded computation, 简单的SQL估计不行.
试着写了一个
假设已有那个表是Direct(mID, dID), mID是manager id, dID是相应的direct report
ID.
那第一问可以用楼上矿工写的
select mID, count(dID)
from Direct
group by mID;
第二问, 求每个manager的所有report (indirect + direct),可以:
with recursive
Indirect(manager, reporter) as (select mID as manager, dID as reporter from
Direct
union
select Indirect.manager, Direct.dID as reporter
from Indirect, Direct
where Indirect.reporter = Direct.mID)
然后就和第一问一样了:
select manager, count(reporter)
from Indirect
group by manager;

【在 l*********8 的大作中提到】
: 一个公司的管理层次也就几层到十几层吧?
: 用个比较土的sql也应该能写出来。

d**e
发帖数: 6098
9
如果是oracle sql的话,可以试试connected by,我没验证,但或者可以试试看看如何
利用level这个变量。
http://www.adp-gmbh.ch/ora/sql/connect_by.html

【在 t*****e 的大作中提到】
: 一个table,就两个field, ManagerID 和 direct Reporter ID
: 要求是得出每个manager下面的有多少direct和indirect reporters

1 (共1页)
进入JobHunting版参与讨论
相关主题
SQL query 求解!敲锣打鼓恭喜学习SQL的同学! (转载)
再请教SQL问题学习了SQL你能做哪些BI职位? (转载)
发个FB电面SQL题目攒个人品希望H1B抽中最近报offer的人比较少
SQL find distinct values in large table (转载)内推sql reporting analyst (转载)
猎头招人,有经验的.NET开发人员Uber的offer接不接?
版上有找C#工作的吗?问个微软面试题
这两个职位哪个更有前途?问个google面试题
公司招聘BI reporting developer请教一道题
相关话题的讨论汇总
话题: direct话题: indirect话题: sql话题: mid话题: reporter