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

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

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


Как модифицировать этот запрос чтобы выводилось только одно значение для максимального batch_id?
...
Рейтинг: 0 / 0
17.10.2018, 12:11
    #39718685
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
Код: 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
17.10.2018, 12:12
    #39718686
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
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
17.10.2018, 12:21
    #39718693
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
Код: plsql
1.
where batch_id = (select max(batch_id) from  batch_t)
...
Рейтинг: 0 / 0
17.10.2018, 12:36
    #39718710
Dimets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
SkilledJunior
Код: plsql
1.
where batch_id = (select max(batch_id) from  batch_t)



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

В два раза дольше работает...
...
Рейтинг: 0 / 0
17.10.2018, 12:54
    #39718729
Dimets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
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
17.10.2018, 12:55
    #39718730
mibin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
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
17.10.2018, 12:58
    #39718732
Dimets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
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
17.10.2018, 15:15
    #39718851
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
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
17.10.2018, 16:09
    #39718918
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
SkilledJuniorПреведЧудак, коверканье запрещено правилами.
...
Рейтинг: 0 / 0
17.10.2018, 20:39
    #39719094
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
ElicЧудак, коверканье запрещено правилами.
Чудак, это мем причем один из первых.
...
Рейтинг: 0 / 0
18.10.2018, 07:38
    #39719167
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
это мем причем один из первыхЗабаньте этого самовлюблённого придурка.
...
Рейтинг: 0 / 0
18.10.2018, 16:33
    #39719483
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
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
18.10.2018, 21:19
    #39719589
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
Elic[Забаньте этого самовлюблённого придурка.
Не стоит свои психологические проблемы выплескивать на техническом форуме.

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

Двойка почти любому в оракловой и не только ветке может продемонстрировать его уровень.
...
Рейтинг: 0 / 0
19.10.2018, 15:58
    #39720037
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
Lary DenisДвойка почти любому в оракловой ... ветке может продемонстрировать его уровень.
Совершенно верно.
Он может.
И адекватный человек отнесется к рекомендациям -2- с подобающим вниманием, ибо полезно.
...
Рейтинг: 0 / 0
19.10.2018, 22:19
    #39720186
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
XMLerРеспект -2-, наглядно продемонстрировал уровень SkilledJunior
Чем продемонстрировал? Если ты не предусматриваешь в разрабатываемой тобой системе никакой защиты от дурака и никакой возможности отладки это твое право, но как это демонстрирует мой уровень?
...
Рейтинг: 0 / 0
21.10.2018, 08:11
    #39720392
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
SkilledJuniorно как это демонстрирует мой уровень?На воре шапка горит всегда.
...
Рейтинг: 0 / 0
21.10.2018, 15:16
    #39720467
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
Я акцентировал внимание на неравноценной замене агрегатной функции в том виде в котором ее предложили обладатели хрустального шара, но у некоторых субъектов началось осеннее обострение ...
...
Рейтинг: 0 / 0
21.10.2018, 15:47
    #39720477
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать count для max значения одним запросом
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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Посчитать count для max значения одним запросом / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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