Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/35: Рейтинг темы: голосов - 35, средняя оценка - 4.51
20 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 45

Запрос SQL: агрегатная функция по таблице из подзапроса

06.01.2012, 01:46. Показов 7068. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, как написать запрос. Например, имеем две таблицы Printer и PC. Надо найти среди двух таблиц модель с максимальной ценой (model, price).

Собственно, понимаю задачу так: составить таблицу максимумов по каждой таблице. Затем из полученной таблицы выбрать максимум.
SQL
1
2
3
4
5
6
7
8
9
10
SELECT mdl, prc
FROM (SELECT model mdl, price prc
      FROM PC
      WHERE price = (SELECT MAX(price) FROM PC)
      UNION
      SELECT model, price
      FROM Printer
      WHERE price = (SELECT MAX(price) FROM Printer)
      ) t
WHERE prc = (SELECT MAX(t.prc) FROM t)
Вот только не работает такой запрос. Если вместо "SELECT MAX(t.prc)..." подставить явно число, то запрос работает.
Как иначе решить задачу? Прошу объяснения, поскольку, именно в этом типе задач, а не в конкретно изложенной выше, возникла загвоздка... А препода увижу через неделю только. Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2012, 01:46
Ответы с готовыми решениями:

Агрегатная функция MAX() для подзапроса
Доброго времени суток! Вроде простая задача, но прошу вашей помощи, т.к. ответ найти не смог. Например, у меня подзапрос SELECT...

SQL запрос по фрагменту строки сохраненной в таблице SQL
Прошу помощи. Есть SQL таблица-1, в ней есть столбец по имени Model_Vagona с типом данных ntext Есть SQL таблица-2, в ней есть столбец...

Агрегатная функция
Нужно написать запрос "Определить кол-во самых старых пациентов" SELECT Count(Год_рождения) AS количество FROM Картотека WHERE...

11
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
06.01.2012, 12:15
SQL
1
2
3
4
5
6
7
SELECT TOP(1) WITH TIES mdl, prc FROM
(
 SELECT model, price FROM PC
 UNION ALL
 SELECT model, price FROM Printer
) t(mdl,prc)
ORDER BY prc DESC;
Только непонятно, почему не сделать одну таблицу и для принтеров,
и для компьютеров, и для всего, чего угодно,
если они в будущем потребуются?
0
20 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 45
06.01.2012, 14:26  [ТС]
Да, логично объединить сначала все таблицы, а потом уже максимум искать. Но! Я неспроста писал код и описание хода моих мыслей. Например, задачу усложним: надо найти по каждой таблице среднее, а потом - максимум этих средних значений по всем таблицам.

Мне интересно, вообще можно как-то написать код, соответствующий ходу моих мыслей
Смысл, что в условии WHERE используется еще один подзапрос, который использует полученную с помощью подзапроса в секции FROM таблицу 't'. Как впихнуть в позапрос в WHERE таблицу из FROM? Вообще, это реально сделать?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
06.01.2012, 14:31
sql-ex?
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
06.01.2012, 14:32
iap,
Только непонятно, почему не сделать одну таблицу и для принтеров,
и для компьютеров, и для всего, чего угодно,
если они в будущем потребуются?
=) В будущем они точно не потребуются, потому как человек решает тесты на sql-ex.ru
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
06.01.2012, 14:34
Цитата Сообщение от Kdn Посмотреть сообщение
iap,

=) В будущем они точно не потребуются, потому как человек решает тесты на sql-ex.ru
Зачетный сайтец, кстати
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
06.01.2012, 14:35
pincet, Это да, по началу карьеры тоже там тренился =)
0
20 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 45
06.01.2012, 16:12  [ТС]
Сайт-то зачетный, но по нерешенным задачам на форум не пускают)
Сам стою на пророге начала карьеры, и нужен, помимо прочего, SQL.

Так что, решаются ли подобные задачи по моей логике? И как, если решаются?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
06.01.2012, 17:57
Максиму максимумов из двух талбиц
SQL
1
2
3
4
SELECT MAX(p) FROM
(SELECT MAX(price) p FROM PC
UNION ALL
SELECT MAX(price) p FROM Printer) se
Добавлено через 1 час 15 минут
sql-ex#24
Перечислите номера моделей любых типов, имеющих самую высокую цену по всей имеющейся в базе данных продукции.

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT model FROM
(SELECT model, price FROM pc
 UNION
 SELECT model, price FROM laptop
 UNION 
 SELECT model, price FROM printer
)se
WHERE se.price= 
(SELECT MAX(price) FROM (
    SELECT price FROM pc
    UNION
    SELECT price FROM laptop
    UNION
    SELECT price FROM printer) sa )
1
20 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 45
06.01.2012, 21:01  [ТС]
Спасибо за код...
Получается, я неправильно мыслю. Нельзя сперва полностью собрать таблицу в подзаппросе секции FROM, а потом по ней уже искать нужные данные с помощью агрегатных в секции WHERE. Ладно, буду еще думать. Спасибо.
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
06.01.2012, 21:06
Попробуй сделать ВСЕ упражнения с sql-ex. По возможности сам. И будет тебе счастие
0
20 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 45
06.01.2012, 21:16  [ТС]
То есть, нельзя составить в секции FROM таблицу, а потом использовать её в секции WHERE по ссылке (типа, как я пытался сделать)?
Нужно составлять две промежуточные таблицы:
1. SA(model, price) в секции FROM
2. SE(price) в секции WHERE

Я правильно всё понял?

По поводу "всех упражнений": пытаюсь. Только вот не понял именно описанный выше момент, из-за чего не могу продолжать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.01.2012, 21:16
Помогаю со студенческими работами здесь

Маленькая агрегатная функция
1) Вывести значение следующего выражения: суммарную зарплату (salary+commission) по всем преподавателям умножить на количество должностей...

Своя агрегатная функция
Привет всем. Возникла необходимость написать функцию на подобии стандартных Max() Avg() и т.д. Т.е. в запросе мы в функцию...

Агрегатная функция от агрегатной функции
Доброго времени суток! Помогите, пожалуйста, разобраться со следующим запросом: Необходимо вывести название географического...

Что такое совокупная (агрегатная) функция?
Здраствуйте. Может кто нибуть подсказать что такое совокупная функция (aggregated function) в SQL? Заранее спасибо.

Агрегатная функция для конкатенации строк в mysql
Как в этом коде сделать, чтоб не все писались в строчку, а те которые необходимы (select (STUFF((SELECT ', ' + FROM dbo.T$kndriver...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru