Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

Есть 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, 08:12   #2
Евгений_93
Пользователь
 
Регистрация: 06.06.2017
Сообщений: 41
Репутация: 10
По умолчанию

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

Не очень красивое решение, но для первого приближения сойдет.
Код:

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 вне форума   Ответить с цитированием
Старый 16.02.2018, 00:01   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,761
Репутация: 6211
По умолчанию

Код:

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, 09:11   #5
ADSoft
Профессионал
 
Регистрация: 25.02.2007
Адрес: Татарстан
Сообщений: 3,220
Репутация: 896

icq: 303-206-418
skype: ad-soft.info
По умолчанию

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, 10:34   #6
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,761
Репутация: 6211
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В файле найти самое большое число, принадлежащее заданному интервалу - Pascal ABC Korban Паскаль 2 05.03.2017 13: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


04:51.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru