Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2017, 12:46   #1
nadya06
Новичок
Джуниор
 
Регистрация: 19.08.2017
Сообщений: 2
По умолчанию Есть две таблицы ("Клиенты" и "Заказы"). Как выбрать клиента, у которого самое большое число заказов?

Всем привет. Помогите, пожалуйста, написать запрос.

Есть 2 таблицы - Clients (client_id, name, address) и Orders (order_id, client_id, summa). Как выбрать клиента, у которого самое большое количество заказов?

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

select Clients.name, count (Orders.client_id) from Clients, Orders
where Clients.client_id=Orders.client_id
group by Clients.name

Но как выбрать ОДНОГО клиента с самым большим числом заказов?
nadya06 вне форума Ответить с цитированием
Старый 21.08.2017, 07:12   #2
Евгений_93
Пользователь
 
Регистрация: 06.06.2017
Сообщений: 41
По умолчанию

Оператор Having условия для группировки
Евгений_93 вне форума Ответить с цитированием
Старый 15.02.2018, 22:33   #3
Steelunicorn
Новичок
Джуниор
 
Регистрация: 15.02.2018
Сообщений: 2
По умолчанию

Не очень красивое решение, но для первого приближения сойдет.
Код:
with maxorder as (
    select 
        client_id
        , row_number() over (partition by client_id order by count(order_id) desc) rn 
    from orders
) 
select * from clients c
inner join maxorder m on m.client_id = c.client_id and m.rn=1
Steelunicorn вне форума Ответить с цитированием
Старый 15.02.2018, 23:01   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
select TOP 1 Clients.client_id,Count(*)
  from Clients,Orders
  where Clients.client_id=Orders.client_id
  group by Clients.client_id
  order by 2 desc
Код:
Но как выбрать ОДНОГО клиента с самым большим числом заказов?
А если таких клиентов 3?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.02.2018, 08:11   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

TOP для MS SQL синтаксис...
в MySQL -
Код:
select MAX(Clients.client_id), Count(*)
  from Clients,Orders
  where Clients.client_id=Orders.client_id
  group by Clients.client_id
  order by Orders.id desc
ADSoft вне форума Ответить с цитированием
Старый 16.02.2018, 09:34   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
TOP для MS SQL синтаксис...
ТС же не уточняет чего ему надо или не понимает, что для разных СУБД синтаксис отличается. Тоды на каком хочу, на том диалекте и отвечаю )) По поводу в МуSQL - не понял как это может работать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.04.2020, 10:41   #7
eliasum
Пользователь
 
Регистрация: 12.02.2015
Сообщений: 31
Смех

А в Oracle SQL Developer?
eliasum вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В файле найти самое большое число, принадлежащее заданному интервалу - Pascal ABC Korban Паскаль, Turbo Pascal, PascalABC.NET 2 05.03.2017 12:05
Фалы,паскаль-Найти самое большое число в файле.Если оно чётное вывести его повторно в конец файла Vika2112 Помощь студентам 0 13.12.2012 08:14
Есть сервер, к нему подключены клиенты, как можно реализвать передачу сообщений от клиента Вася к клиенту Петя androk C# (си шарп) 1 20.05.2012 17:44
самое большое число в массиве LikeMe Visual C++ 3 10.12.2011 00:10
Как узнать самое большое число в столбце? Dux БД в Delphi 7 04.09.2011 21:22