2013-11-20 3 views
0

Я искал буквально часы (13: 00-11: 00) для решения этого SQL-запроса, который мне нужно написать. В принципе, у меня есть 2 таблицы, и я должен выбрать идентификатор из одной таблицы, которая имеет максимальные результаты в другом. Второй вопрос - это два идентификатора. Я не могу объяснить, что я имею в виду, потому что я не уверен, но могу опубликовать свои инструкции и ссылку на таблицы.sql max of count 2 tables

Любая помощь будет принята с благодарностью. Я также посмотрел миллион других сообщений на SO и других местах, но даже если это кажется отдаленно релевантным, я не знаю, какие изменения нужно внести в соответствии с моими потребностями.

т.е.

SQL SELECT MAX COUNT

Так что моя задача заключается в следующем: -

Display the name and the telephone number of private owners which have more properties than anybody else. 

Столешница в изображении показывает "свойства в аренду" таблица и ниже показаны «частные владельцы».

Ссылаясь на вопрос, мне нужно использовать первичный ключ таблицы частных владельцев, чтобы подсчитать количество свойств, доступных каждому собственному собственнику, а затем отобразить сведения о частном владельце (владельцах), который имеет большинство доступных свойств - которые, изучая данные, составляют 2 частных владельца (CO87 и CO93).

Опять же, я был бы признателен за любую помощь на всех с этим, я потянув меня за волосы для лучшей части 12 часов:/

Заранее спасибо, ребята,

Тим.

P.s - Просто для любопытных, это один из безумного количества задач SQL для присвоения университета =)

Edit: - идентификаторы владельца являются строками, а не целые числа.

+0

Кроме того, если кто-то достаточно удивительным, чтобы обеспечить решение - это было бы слишком много, чтобы попросить дженерика? На всякий случай кто-то сталкивается с этой утомительной проблемой? :) – Timmy

+1

Теперь я собираюсь спать, но заглядываю в функцию dense_rank() ... –

+0

Вы даже попробовали что-то? Вместо того, чтобы размещать здесь свою домашнюю работу и просить нас сделать это? –

ответ

1

Ваш процесс должен быть:

  1. Получить количество свойств для каждого владельца
  2. Найти идентификаторы владельца с максимальными # свойств
  3. Найти владелец с тех владельцем ID.

Кажется, как это должно работать:

SELECT * FROM Owners 
WHERE OwnerID IN 
    (
    SELECT OwnerID 
    FROM Properties 
    GROUP BY OwnerID 
    HAVING COUNT(*) = 
     (SELECT COUNT(*) 
     FROM Properties 
     GROUP BY OwnerID 
     ORDER BY COUNT(*) DESC 
     LIMIT 1) 
) 
+1

Ах, но у нескольких владельцев максимальный счет ... –

+0

Просто текст для OP будет достаточным, так как он пытается заставить нас сделать это домашнее задание. –

+0

См. Мое редактирование - не уверен, что подзапрос в предложении HAVING будет работать в postgresql, но логически так оно и будет работать. –