在oracle中使用分组列获取行数

use*_*342 -1 sql oracle

我有下面的SQL查询

select sta_name Station,count(factory_name) as factories from gps1
group by sta_name
order by sta_name
Run Code Online (Sandbox Code Playgroud)

通过这个查询我只得到一个工作站的总工厂.问题是我想得到的结果形状,工厂编号也应该显示在工厂的总工厂中如果一个工作站有5个因素然后五个工厂应该有这个输出

1/5
2/5
3/5
4/5
5/5
Run Code Online (Sandbox Code Playgroud)

任何人请帮助我得到这种类型的结果 更新 我想要这个输出例如我在车站1有5个工厂

factoryName      Count
factroty 1        1/5
factroty 2        2/5
factroty 3        3/5
factroty 4        4/5
factroty 5        5/5
Run Code Online (Sandbox Code Playgroud)

Joh*_*yle 5

将计数转换为分析函数并删除分组:

select sta_name Station,count(factory_name) over(partition by sta_name) as factories from gps1
order by sta_name
Run Code Online (Sandbox Code Playgroud)

当然,如果您想要它,1/5那么将其更改为:

select sta_name||'/'||count(factory_name) over(partition by sta_name) as factories from gps1
order by sta_name
Run Code Online (Sandbox Code Playgroud)

编辑:将其标记为"1中5","2中5"等,然后您可以添加row_number:

select   FACTORY_NAME
        ,   row_number() over (partition by STA_NAME order by STA_NAME)
         || '/'
         || count(STA_NAME) over (partition by STA_NAME)
           as FACTORIES
from     GPS1
order by FACTORY_NAME
Run Code Online (Sandbox Code Playgroud)