在oracle sql中是否存在用于计数的分析函数

问题描述 投票:1回答:2
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
sql oracle-apex oracle-apex-5 oracle-apex-5.1
2个回答
0
投票

您的代码为所有管理者返回“ 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;

0
投票

您想要的结果可以通过以下方式检索

select manager, count(*) over (partition by manager) cnt
from dbtable

这意味着每个管理器都将与{manager}值等于该确切管理器的分区中的行数相关联。根据上表,这是您期望得到的。

© www.soinside.com 2019 - 2024. All rights reserved.