Получить номер строки, используя сгруппированные столбцы в Oracle - PullRequest
0 голосов
/ 08 февраля 2012

У меня следующий запрос sql

select sta_name Station,count(factory_name) as factories from gps1
group by sta_name
order by sta_name

С помощью этого запроса я получаю только общее количество фабрик на одной Станции. Проблема в том, что я хочу получить результат в форме, согласно которой номер фабрики также должен отображаться из общего количества фабрик на Станции. Например, если на Станции 5 заводов тогда пять фабрик должны иметь этот результат

1/5
2/5
3/5
4/5
5/5

Любой, пожалуйста, помогите мне получить этот тип результата 1008 * ОБНОВЛЯТЬ * Хочу этот вывод например у меня есть 5 заводов на станции station1

factoryName      Count
factroty 1        1/5
factroty 2        2/5
factroty 3        3/5
factroty 4        4/5
factroty 5        5/5

1 Ответ

5 голосов
/ 08 февраля 2012

Превратите счет в аналитическую функцию и удалите группировку:

select sta_name Station,count(factory_name) over(partition by sta_name) as factories from gps1
order by sta_name

Конечно, если вы хотите, чтобы это было похоже на 1/5, тогда измените его на:

select sta_name||'/'||count(factory_name) over(partition by sta_name) as factories from gps1
order by sta_name

РЕДАКТИРОВАТЬ : чтобы пометить его, скажем, как «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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...