powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Посчитать count для max значения одним запросом
25 сообщений из 28, страница 1 из 2
Посчитать count для max значения одним запросом
    #39718670
Dimets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос

select batch_id, count(rowid) cnt from batch_t
group by batch_id

Допустим он возвращает следующие данные:
batch_idcnt1238915


Как модифицировать этот запрос чтобы выводилось только одно значение для максимального batch_id?
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718685
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
select max(batch_id) as batch_id, max(count(*)) keep (… batch_id) as cnt from batch_t group by batch_id

...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718686
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimets,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
with q (batch_id, cnt ) as (
select 1 ,2 from dual union all
select 1 ,2 from dual union all 
select 3 ,8 from dual union all
select 3 ,8 from dual union all
select 3 ,8 from dual union all
select 3 ,8 from dual union all
select 3 ,8 from dual union all
select 3 ,8 from dual union all
select 3 ,8 from dual union all
select 3 ,8 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual union all
select 9 ,15 from dual)

select batch_id, count(*) from q
where not exists (select * from q q2 where q.batch_id < q2.batch_id)
group by batch_id
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718693
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
where batch_id = (select max(batch_id) from  batch_t)
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718710
Dimets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SkilledJunior
Код: plsql
1.
where batch_id = (select max(batch_id) from  batch_t)



таблица очень большая((
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718712
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimetsтаблица очень большая((
И чЁ?
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718722
Dimets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SkilledJuniorDimetsтаблица очень большая((
И чЁ?

В два раза дольше работает...
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718729
Dimets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
Код: plsql
1.
select max(batch_id) as batch_id, max(count(*)) keep (… batch_id) as cnt from batch_t group by batch_id



так работает, спасибо

но теперь при попытке сделать в PL/SQL процедуре такой запрос получаю ora-00934

select max(a.batch_id) into batch_id, max(count(a.rowid)) keep (dense_rank last order by a.batch_id) into l_cnt
from batch_t a
group by a.batch_id;
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718730
mibin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimets,
Вот так попробуйте:

Код: plsql
1.
2.
3.
select max(a.batch_id), max(count(a.rowid)) keep (dense_rank last order by a.batch_id) into batch_id, l_cnt 
from batch_t a
group by a.batch_id;
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718732
Dimets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mibinDimets,
Вот так попробуйте:

Код: plsql
1.
2.
3.
select max(a.batch_id), max(count(a.rowid)) keep (dense_rank last order by a.batch_id) into batch_id, l_cnt 
from batch_t a
group by a.batch_id;



спасибо!
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718851
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mibin,

Превед
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with batch_t  (batch_id) as (
select 1 from dual union all
select 1 from dual union all 
select 3 from dual union all
select 3 from dual union all
select 3 from dual union all
select 9 from dual union all
select 9 from dual union all
select 9 from dual union all
select 9 from dual union all
select null from dual union all
select 9 from dual)
select max(a.batch_id), max(count(*)) keep (dense_rank last order by a.batch_id)
from batch_t a
group by a.batch_id;
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39718918
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkilledJuniorПреведЧудак, коверканье запрещено правилами.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39719094
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicЧудак, коверканье запрещено правилами.
Чудак, это мем причем один из первых.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39719167
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это мем причем один из первыхЗабаньте этого самовлюблённого придурка.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39719483
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkilledJuniormibin,

Превед
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with batch_t  (batch_id) as (
select 1 from dual union all
select 1 from dual union all 
select 3 from dual union all
select 3 from dual union all
select 3 from dual union all
select 9 from dual union all
select 9 from dual union all
select 9 from dual union all
select 9 from dual union all
select null from dual union all
select 9 from dual)
select max(a.batch_id), max(count(*)) keep (dense_rank last order by a.batch_id)
from batch_t a
group by a.batch_id;



У тс не было пустых батчей, поэтому в предложенном варианте нет и их обработки.
Если у тебя они есть и ты их не обработал, добавив nulls first, это характеризует твой уровень.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39719589
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic[Забаньте этого самовлюблённого придурка.
Не стоит свои психологические проблемы выплескивать на техническом форуме.

XMLerУ тс не было пустых батчей, поэтому в предложенном варианте нет и их обработки.
Если у тебя они есть и ты их не обработал, добавив nulls first, это характеризует твой уровень.
Это вовсе не означает что они не появятся в дальнейшем, и мой пост не для гуру с зашкаливающим ЧСВ, а для того чтобы автор темы задумался о том что копипастит.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39719596
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkilledJuniorпоявятся в дальнейшемА еще в дальнейшем могут удалить все строки и запрос ничего не вернет. Потом кто-нибудь поменяет тип поля на varchar2 и '2' окажется больше '10'....
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39719624
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-А еще в дальнейшем могут удалить все строки и запрос ничего не вернет. Потом кто-нибудь поменяет тип поля на varchar2 и '2' окажется больше '10'....
Обработчик для первой ситуации желательно сделать в приложении, вторая ситуация связана со структурой самой системы, тут только проверять и тестировать все зависимые объекты системы.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39719972
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkilledJunior-2-А еще в дальнейшем могут удалить все строки и запрос ничего не вернет.
Обработчик для первой ситуации желательно сделать в приложении
Респект -2-, наглядно продемонстрировал уровень SkilledJunior
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39720033
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerРеспект -2-, наглядно продемонстрировал уровень SkilledJunior

Двойка почти любому в оракловой и не только ветке может продемонстрировать его уровень.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39720037
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lary DenisДвойка почти любому в оракловой ... ветке может продемонстрировать его уровень.
Совершенно верно.
Он может.
И адекватный человек отнесется к рекомендациям -2- с подобающим вниманием, ибо полезно.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39720186
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XMLerРеспект -2-, наглядно продемонстрировал уровень SkilledJunior
Чем продемонстрировал? Если ты не предусматриваешь в разрабатываемой тобой системе никакой защиты от дурака и никакой возможности отладки это твое право, но как это демонстрирует мой уровень?
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39720392
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkilledJuniorно как это демонстрирует мой уровень?На воре шапка горит всегда.
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39720467
SkilledJunior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я акцентировал внимание на неравноценной замене агрегатной функции в том виде в котором ее предложили обладатели хрустального шара, но у некоторых субъектов началось осеннее обострение ...
...
Рейтинг: 0 / 0
Посчитать count для max значения одним запросом
    #39720477
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Top N queries вроде не упоминали:

Код: plsql
1.
2.
3.
4.
5.
select batch_id, count(*) cnt from batch_t
group by batch_id
order by batch_id desc
fetch first 1 row only
/



SY.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Посчитать count для max значения одним запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]