Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Max count / 11 сообщений из 11, страница 1 из 1
17.08.2017, 18:50
    #39507099
Nadzeya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
Есть 2 таблицы - Клиенты (client_id, name, address) и Заказы (order_id, user_id, summa). Как выбрать клиента, который сделал самое большое количество заказов?

Запрос, который показывает сколько у каждого клиента заказов:

select Users.name, count (Orders.user_id) from Users, Orders
where Users.user_id=Orders.user_id
group by Users.name

Но как выбрать одного клиента с max числом заказов? Подскажите пожалуйста!
...
Рейтинг: 0 / 0
17.08.2017, 18:56
    #39507102
Nadzeya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
Извиняюсь за описку, Client и User - одно и тоже.
...
Рейтинг: 0 / 0
17.08.2017, 18:58
    #39507105
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
А что именно у вас не получается?
...
Рейтинг: 0 / 0
17.08.2017, 19:08
    #39507119
Озо
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
Nadzeya,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select * from
(
select Users.name, 
          count (Orders.user_id) cnt,
          row_number() over (order by count(Orders.user_id) desc) rn
from Users, Orders
where Users.user_id=Orders.user_id
group by Users.name
)
where rn=1 
...
Рейтинг: 0 / 0
17.08.2017, 19:36
    #39507148
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
Более эффективно было бы вначале найти user_id итолько потом джойн с USERS.

SY.
...
Рейтинг: 0 / 0
17.08.2017, 22:37
    #39507209
K790
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
откуда берутся такие вопросы? это уже второй.
собеседованием Озо или?
...
Рейтинг: 0 / 0
18.08.2017, 08:41
    #39507269
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
Была история на форумс.оракле.ком, там за ответы присваивают статусы. Некое чудо отыскивало отвеченные темы, брало вопрос под одним ником и давало ответ под другим и получало благодарность от первого... Озо, видимо, придумывает вопросы само, насколько хватает фантазии.
...
Рейтинг: 0 / 0
18.08.2017, 08:47
    #39507272
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
NadzeyaЕсть 2 таблицы - Клиенты (client_id, name, address) и Заказы (order_id, user_id, summa). Как выбрать клиента, который сделал самое большое количество заказов?

Запрос, который показывает сколько у каждого клиента заказов:

select Users.name, count (Orders.user_id) from Users, Orders
where Users.user_id=Orders.user_id
group by Users.name

Но как выбрать одного клиента с max числом заказов? Подскажите пожалуйста!

если больше одного клиента сделали самое большое количество заказов, тогда как?

.....
stax
...
Рейтинг: 0 / 0
18.08.2017, 09:56
    #39507309
фирст-ласт
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
Staxесли больше одного клиента выдавать среднее лингвистмческое их имен.
...
Рейтинг: 0 / 0
18.08.2017, 10:22
    #39507339
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
фирст-ластStaxесли больше одного клиента выдавать среднее лингвистмческое их имен.
Код: 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.
31.
SQL> ed
Wrote file afiedt.buf

  1  with clients (client_id,name) as (
  2  select 1,'Nadzeya' from dual union all
  3  select 2,'фирст-ласт' from dual union all
  4  select 3,'Stax' from dual )
  5  ,orders (order_id, user_id, summa) as (
  6  select 100,1,7 from dual union all
  7  select 101,2,0.1 from dual union all
  8  select 103,2,0.2 from dual union all
  9  select 103,3,0.3 from dual union all
 10  select 105,1,9 from dual
 11  )
 12  ,oo as (
 13  select
 14    user_id
 15   ,rank() over (order by count(*) desc) rk
 16   ,count(*) cc
 17  from orders
 18  group by user_id)
 19  select
 20    listagg(nvl(name,'*Тайняк*'), ', ') within group(order by name) name_avg_lingv
 21  ,max(o.cc) cc
 22  from oo o,clients c
 23* where c.client_id(+)=o.user_id and o.rk=1
SQL> /

NAME_AVG_LINGV                                   CC
---------------------------------------- ----------
Nadzeya, фирст-ласт                               2




.....
stax
...
Рейтинг: 0 / 0
20.08.2017, 15:06
    #39508027
Nadzeya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Max count
Всем спасибо за помощь.

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


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