select manager, count(*) over (partition by manager) cnt
from dbtable
group by manager
这将为我提供经理人的职位,但是如果我需要一位senior_manager的职位,我将如何获得?
|--------------------|------------------|
| Manager |Senior_Manager |
|--------------------|------------------|
| John |Arpit |
| John |govind |
| John |olive |
| Domnic |kelvin |
| Domnic |paul |
|--------------------|------------------|
结果
John 3
Domnic 2
您的代码为所有管理者返回“ 1”-因为它计算的行数after group by
。
如果要为给定管理器计算表中的行数,则需要聚合,而不是analytic函数:
Select manager, count(*) as cnt
from dbtable
group by manager;
我不确定这是否能回答您的问题,但至少可以解决您的查询没有太大用处的问题。
编辑:
对于修订后的问题,似乎只是:
Select senior_manager, count(*) as cnt
from dbtable
group by senior_manager;
您想要的结果可以通过以下方式检索
select manager, count(*) over (partition by manager) cnt
from dbtable
这意味着每个管理器都将与{manager}值等于该确切管理器的分区中的行数相关联。根据上表,这是您期望得到的。