Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
26.04.2015
Размер:
339.81 Кб
Скачать

Величко Семён Владимирович

ФПКиФ II-2

Хусаинова Рена Фаридовна

Практическое задание №10.

Запросы с подзапросами.

  1. Вывести программные продукты (programs) с ценой выше средней цены программных продуктов разработчика данного продукта. Вывести название программы, цену, название разработчика, среднюю цену программ данного разработчика;

  2. Вывести программные продукты (programs) в написании которых использовалось максимально возможное количество языков;

  3. Для каждого языка программирования вывести уровень этого языка (поле level этой же таблицы) и количество языков относящихся к этому же уровню.

Исходные данные:

1. Вывести программные продукты (programs) с ценой выше средней цены программных продуктов разработчика данного продукта. Вывести название программы, цену, название разработчика, среднюю цену программ данного разработчика:

SELECT P.Product_name, P.Price, A.Developer, A.Average_price

FROM (SELECT D.ID, D.Developer, AVG(P.Price) AS Average_price

FROM developers AS D INNER JOIN programs AS P ON D.ID = P.Number_of_developer

GROUP BY D.ID, D.Developer) AS A INNER JOIN programs AS P ON A.ID = P.Number_of_developer

WHERE P.Price > A.Average_price;

2. Вывести программные продукты (programs) в написании которых использовалось максимально возможное количество языков:

SELECT P.ID, P.Product_name

FROM programs AS P INNER JOIN (written_in AS W INNER JOIN programming_languages AS PL ON W.LangNum = PL.LangID) ON P.ID = W.ProgNum

GROUP BY P.ID, P.Product_name

HAVING COUNT(PL.LangID) = (SELECT MAX(LU.Used) AS MaxUsed

FROM (SELECT P.ID, COUNT(PL.LangID) AS Used

FROM programs AS P INNER JOIN (written_in AS W INNER JOIN programming_languages AS PL ON W.LangNum = PL.LangID) ON P.ID = W.ProgNum

GROUP BY P.ID) AS LU);

3. Для каждого языка программирования вывести уровень этого языка (поле level этой же таблицы) и количество языков относящихся к этому же уровню:

SELECT PL.name, PL.level, CNT.QTY

FROM (SELECT PL.level, COUNT(PL.LangID) AS QTY

FROM programming_languages AS PL

GROUP BY PL.level) AS CNT INNER JOIN programming_languages PL ON PL.level = CNT.level;

Соседние файлы в папке Homeworks