<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://iu5bmstu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Odemwingie</id>
	<title>Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://iu5bmstu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Odemwingie"/>
	<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Odemwingie"/>
	<updated>2026-04-29T20:25:53Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%9F%D0%B0%D1%81%D1%85%D0%B8%D0%BD%D0%B0_%D0%9E.%D0%9C.&amp;diff=3810</id>
		<title>Пасхина О.М.</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%9F%D0%B0%D1%81%D1%85%D0%B8%D0%BD%D0%B0_%D0%9E.%D0%9C.&amp;diff=3810"/>
		<updated>2013-06-14T09:18:52Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;{{Преподаватель| photo=Pashina.JPG | f=Пасхина | i=Ольга | o=Михайловна |  dr=? | kaf=ИБМ6}}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пасхина Ольга Михайловна. Заместитель заведующего кафедрой, старший преподаватель [http://ibm.bmstu.ru/ibm6/ ИБМ6].&lt;br /&gt;
&lt;br /&gt;
Окончила МГТУ им. Н.Э. Баумана в 2009 году. Автор 4 научных работ в области инновационной экономики.&lt;br /&gt;
&lt;br /&gt;
== Предметы ==&lt;br /&gt;
&lt;br /&gt;
* [[:Категория:Основы предпринимательства (9 семестр) | Основы предпринимательства (9 семестр)]]&lt;br /&gt;
&lt;br /&gt;
== Контакты ==&lt;br /&gt;
&lt;br /&gt;
: [[Файл:Phone.png | 15px]] телефон: &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;&amp;lt;code&amp;gt;[hidden]&amp;lt;/code&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;sup&amp;gt;[[:Категория:Преподаватели#Скрытие адресов и номеров | штоэта?]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
: [[Файл:E-mail.png | 15px]] e-mail:&lt;br /&gt;
::* {{Lalettre|u=paskhinaom|d2=gmail|d1=com}} (предпочтительней)&lt;br /&gt;
::* {{Lalettre|u=paskhina|d2=mail|d1=ru}}&lt;br /&gt;
: [[Файл:Facebook.png | 15px]] Facebook: http://www.facebook.com/olga.paskhina.7 (с некоторых пор страница недоступна)&lt;br /&gt;
&lt;br /&gt;
[[Категория:Преподаватели]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3793</id>
		<title>Категория:Структурное проектирование АСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3793"/>
		<updated>2013-06-09T16:40:53Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Экзамен */ - добавил ответы на теорию&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;{{Предмет | name=Структурное проектирование АСОИ | prepod=[[Григорьев Ю.А.]] | lections=? | seminars=нет | labs=2 | dzs=нет | rks=нет | signif=обязательно | what=экзамен}}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Структурное проектирование автоматизированных систем обработки информации.&lt;br /&gt;
__TOC__&lt;br /&gt;
== Лекции ==&lt;br /&gt;
&lt;br /&gt;
Ходить обязательно, на каждой всех отмечают в списках групп.&lt;br /&gt;
&lt;br /&gt;
* [http://yadi.sk/d/7P-eB1Gw5Mtm0 все лекции по предмету в формате DOCX] (не спрашивайте, зачем)&lt;br /&gt;
&lt;br /&gt;
== Лабораторные работы ==&lt;br /&gt;
&lt;br /&gt;
Лабораторные ведёт не сам Григорьев, а его аспирант - [[Ермаков Е.Ю.]].&lt;br /&gt;
&lt;br /&gt;
Использование CASE-средств для выявления информационных потребностей конечных пользователей и описания схемы БД.&lt;br /&gt;
&lt;br /&gt;
ПО для лабораторных выдают, но ворованное, а лекарство от жадности истекло в 2010 г. В связи с этим, перед регистрацией необходимо откатить системное время назад. Либо украсть самостоятельно новое. Ну хотя можете и [http://www.itshop.ru/CA-ERwin-Data-Modeler-Standard-Edition-r8-Product-plus-1-Year-Enterprise-Maintenance-OLP/l4t1i162087 купить], конечно.&lt;br /&gt;
&lt;br /&gt;
Пользователи виртуальных машин, будьте внимательны: виртуальные машины могут синхронизировать время с хостом. Как отключить синхронизацию в VirtualBox, описано [https://forums.virtualbox.org/viewtopic.php?t=24057 здесь].&lt;br /&gt;
&lt;br /&gt;
=== Лабораторная работа №1 ===&lt;br /&gt;
&lt;br /&gt;
С помощью пакета [http://www.interface.ru/home.asp?artId=102 AllFusion Process Modeler] (ранее назывался BPwin) разработать диаграмму потоков данных системы, организующей работу банкомата по обслуживанию клиента по его пластиковой карте (5 диаграмм, начиная с [[СПАСОИ (10) - Лекция №3 - DFD#Пример построения DFD | лекции №3]]).&lt;br /&gt;
&lt;br /&gt;
Все имена, названия и подписи должны быть на русском языке. Григорьев учил немецкий и потому на английском не примет. Если сделать на немецком, то не примет Ермаков, который ведёт лабораторные, потому что он не учил немецкий. А если сделать на русском, то вместо осмысленных надписей будут иероглифы. Чтобы были не иероглифы, надо настраивать шрифты надписей.&lt;br /&gt;
&lt;br /&gt;
Сгенерировать отчёт в формате [http://itteach.ru/bpwin/otcheti-v-bpwin Diagram Object Report].&lt;br /&gt;
&lt;br /&gt;
Отчёт по лабораторной работе должен включать рисунки диаграмм потоков данных, их краткие описание и текст отчёта &amp;lt;code&amp;gt;Diagram Object Report&amp;lt;/code&amp;gt; в приложении.&lt;br /&gt;
&lt;br /&gt;
Вопросы на защите:&lt;br /&gt;
* как называются диаграммы, которые строятся в работе? (&#039;&#039;сверхсложный вопрос: не ответил - не защитил&#039;&#039;);&lt;br /&gt;
* из каких элементов состоят диаграммы?&lt;br /&gt;
* чем отличаются DFD и IDEF0 и UML?&lt;br /&gt;
* почему у вас на диаграммах автором указан Vasily?&lt;br /&gt;
* докажешь, что это твой отчет?&lt;br /&gt;
* удиви меня.&lt;br /&gt;
&lt;br /&gt;
=== Лабораторная работа №2 ===&lt;br /&gt;
&lt;br /&gt;
С помощью [http://www.interface.ru/home.asp?artId=101 AllFusion ERwin Data Modeler] разработать &amp;lt;code&amp;gt;Logical&amp;lt;/code&amp;gt; схему базы данных процессингового центра. Сформировать &amp;lt;code&amp;gt;Physical&amp;lt;/code&amp;gt; схему базы данных, например, для &amp;lt;code&amp;gt;Oracle&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Оформить отчёт по лабораторной работе в формате &amp;lt;code&amp;gt;.doc&amp;lt;/code&amp;gt; (но так как сдавать в печатном виде, то это безразлично), в который следует включить &amp;lt;code&amp;gt;Logical&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;Physical&amp;lt;/code&amp;gt; схемы базы данных с кратким описанием, а также &amp;lt;code&amp;gt;DDL-сценарий&amp;lt;/code&amp;gt; (хотя и SQL должен подойти), из которого можно убрать описания всех триггеров, процедур и прочего ненужного, оставив только создание таблиц и ключей.&lt;br /&gt;
&lt;br /&gt;
SQL операторы на русский можно не переводить.&lt;br /&gt;
&lt;br /&gt;
Вопросы на защите:&lt;br /&gt;
* какие есть типы связей между сущностями и чем они друг от друга отличаются?&lt;br /&gt;
* почему SQL из отчета не заработает?&lt;br /&gt;
* показать связи на логической и физической схемах.&lt;br /&gt;
* докажешь, что это твой отчет?&lt;br /&gt;
* удиви меня.&lt;br /&gt;
&lt;br /&gt;
=== Готовые лабораторные ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Год !! Вариант исполнения !! Ссылка&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 2013 || 1 || [http://yadi.sk/d/pItVfTFk5S9zi загрузить]&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 2013 || 2 || [http://yadi.sk/d/dzCRsO855SA-w загрузить]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Курсовая работа ==&lt;br /&gt;
&lt;br /&gt;
Страница курсовой работы находится [[Курсовая по СПАСОИ (10 семестр) | здесь]].&lt;br /&gt;
&lt;br /&gt;
== Экзамен ==&lt;br /&gt;
&lt;br /&gt;
* [http://yadi.sk/d/lUSXs8JN55cZM билеты на экзамен (только вопросы)];&lt;br /&gt;
* [http://yadi.sk/d/TkTW40h25dr2j ответы на экзамен (только теория)];&lt;br /&gt;
* [[SQL-запросы к экзамену по СПАСОИ (10 семестр) | составленные запросы к билетам экзамена]].&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
* Григорьев Ю.А., Плутенко А.Д. - Теория и практика проектирования систем на основе БД;&lt;br /&gt;
* Преснякова Т.В. - &amp;quot;Проектирование интегрированных реляционных БД&amp;quot;;&lt;br /&gt;
* Маклаков С.В. - &amp;quot;Создание информационных систем&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Категория:10 семестр]]&lt;br /&gt;
[[Категория:Предметы]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3752</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3752"/>
		<updated>2013-06-08T10:47:28Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 19 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием &#039;Панно 01-03&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT cvet AS &amp;quot;Цвет&amp;quot;, SUM(kolichestvo) AS &amp;quot;Деталей&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.p, spasoi_ekz.spj JOIN spasoi_ekz.j J&lt;br /&gt;
                                    ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = LOWER(&#039;Панно 01-03&#039;)&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё один вариант этого запроса&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT cvet AS &amp;quot;Цвет&amp;quot;, SUM(kolichestvo) AS &amp;quot;Деталей&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			     AND J.nazvanie = LOWER(&#039;Панно 01-03&#039;)&lt;br /&gt;
			JOIN spasoi_ekz.P P&lt;br /&gt;
			  ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Цвет  | Деталей&lt;br /&gt;
 -------+---------&lt;br /&gt;
  белый |       9&lt;br /&gt;
  серый |       5&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom AS &amp;quot;Номер поставщика&amp;quot;, cnt AS &amp;quot;Количество поставок&amp;quot;&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT S.nomer_postavshika AS nom,&lt;br /&gt;
             COUNT(SPJ.nomer_postavshika) AS cnt,&lt;br /&gt;
             AVG(SPJ.kolichestvo) AS kol&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
      GROUP BY S.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос немного попроще&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika AS &amp;quot;Номер поставщика&amp;quot;, COUNT(*) AS &amp;quot;Количество поставок&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING AVG(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY nomer_postavshika;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер поставщика | Количество поставок&lt;br /&gt;
 ------------------+---------------------&lt;br /&gt;
  S13              |                   1&lt;br /&gt;
  S6               |                   7&lt;br /&gt;
  S14              |                   1&lt;br /&gt;
  S15              |                   1&lt;br /&gt;
 (4 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &#039;Гайка 01-01&#039; для изделия с названием &#039;Велосипед 03-04&#039; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем &#039;Иванов&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s S JOIN spasoi_ekz.spj SPJ&lt;br /&gt;
                      ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                    JOIN spasoi_ekz.p P&lt;br /&gt;
                      ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                    JOIN spasoi_ekz.j J&lt;br /&gt;
                      ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
  AND P.nazvanie = LOWER(&#039;Гайка 01-01&#039;)&lt;br /&gt;
  AND J.nazvanie = LOWER(&#039;Велосипед 03-04&#039;)&lt;br /&gt;
  AND kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                       ON SPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                     WHERE S.imya = &#039;Иванов&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &#039;Рама 02-03&#039; в количестве, меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie&lt;br /&gt;
FROM spasoi_ekz.p X JOIN spasoi_ekz.spj SPJ&lt;br /&gt;
                      ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
                    JOIN spasoi_ekz.j J&lt;br /&gt;
                      ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
  AND J.nazvanie = LOWER(&#039;Рама 02-03&#039;)&lt;br /&gt;
  AND kolichestvo &amp;lt; 10&lt;br /&gt;
  AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM spasoi_ekz.j J JOIN spasoi_ekz.spj SPJ&lt;br /&gt;
                                        ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
                  WHERE J.nazvanie != LOWER(&#039;Рама 02-03&#039;)&lt;br /&gt;
                    AND X.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     nazvanie&lt;br /&gt;
 ----------------&lt;br /&gt;
  усиленная рама&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s S JOIN spasoi_ekz.spj SPJ&lt;br /&gt;
                      ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                    JOIN spasoi_ekz.p P&lt;br /&gt;
                      ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE cvet = &#039;белый&#039;&lt;br /&gt;
  AND NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_postavshika&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                            ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                  WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                    AND P.cvet != &#039;белый&#039;&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё один вариант этого же запроса&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                          ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                             AND cvet = &#039;белый&#039;&lt;br /&gt;
                        JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE S.nomer_postavshika NOT IN (&lt;br /&gt;
                                  SELECT nomer_postavshika&lt;br /&gt;
                                  FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                                            ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                               AND cvet != &#039;белый&#039;&lt;br /&gt;
                                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       imya&lt;br /&gt;
 -----------------&lt;br /&gt;
  Сэмвелл Тарли&lt;br /&gt;
  Рендилл Тарли&lt;br /&gt;
  Мелисса Флорент&lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования деталей и общее их количество для всех наименований деталей,изготавливаемых в одном городе.&lt;br /&gt;
&lt;br /&gt;
Формулировка запроса - просто вынос мозга...&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie, kol FROM P A, (&lt;br /&gt;
                                SELECT X.gorod, SUM(kolichestvo) as kol FROM P X, SPJ Y&lt;br /&gt;
                                WHERE Y.nomer_detali = X.nomer_detali&lt;br /&gt;
                                GROUP BY X.gorod&lt;br /&gt;
                                )B&lt;br /&gt;
WHERE A.gorod = B.gorod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих хотя бы одну белую деталь для изделия сназванием ‘Велосипед 01-04’ с объёмом поставки большим, чем средний объём поставки этого поставщика.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 01-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = X.nomer_postavshika);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BY S.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3751</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3751"/>
		<updated>2013-06-08T10:47:13Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 19 */  - убрал основной запрос, оставил дополнительный, так как в основном не делалась проверка на вхождение ТОЛЬКО в изделие Рама&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием &#039;Панно 01-03&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT cvet AS &amp;quot;Цвет&amp;quot;, SUM(kolichestvo) AS &amp;quot;Деталей&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.p, spasoi_ekz.spj JOIN spasoi_ekz.j J&lt;br /&gt;
                                    ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = LOWER(&#039;Панно 01-03&#039;)&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё один вариант этого запроса&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT cvet AS &amp;quot;Цвет&amp;quot;, SUM(kolichestvo) AS &amp;quot;Деталей&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			     AND J.nazvanie = LOWER(&#039;Панно 01-03&#039;)&lt;br /&gt;
			JOIN spasoi_ekz.P P&lt;br /&gt;
			  ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Цвет  | Деталей&lt;br /&gt;
 -------+---------&lt;br /&gt;
  белый |       9&lt;br /&gt;
  серый |       5&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom AS &amp;quot;Номер поставщика&amp;quot;, cnt AS &amp;quot;Количество поставок&amp;quot;&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT S.nomer_postavshika AS nom,&lt;br /&gt;
             COUNT(SPJ.nomer_postavshika) AS cnt,&lt;br /&gt;
             AVG(SPJ.kolichestvo) AS kol&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
      GROUP BY S.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос немного попроще&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika AS &amp;quot;Номер поставщика&amp;quot;, COUNT(*) AS &amp;quot;Количество поставок&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING AVG(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY nomer_postavshika;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер поставщика | Количество поставок&lt;br /&gt;
 ------------------+---------------------&lt;br /&gt;
  S13              |                   1&lt;br /&gt;
  S6               |                   7&lt;br /&gt;
  S14              |                   1&lt;br /&gt;
  S15              |                   1&lt;br /&gt;
 (4 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &#039;Гайка 01-01&#039; для изделия с названием &#039;Велосипед 03-04&#039; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем &#039;Иванов&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s S JOIN spasoi_ekz.spj SPJ&lt;br /&gt;
                      ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                    JOIN spasoi_ekz.p P&lt;br /&gt;
                      ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                    JOIN spasoi_ekz.j J&lt;br /&gt;
                      ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
  AND P.nazvanie = LOWER(&#039;Гайка 01-01&#039;)&lt;br /&gt;
  AND J.nazvanie = LOWER(&#039;Велосипед 03-04&#039;)&lt;br /&gt;
  AND kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                       ON SPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                     WHERE S.imya = &#039;Иванов&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &#039;Рама 02-03&#039; в количестве, меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie&lt;br /&gt;
FROM spasoi_ekz.p X JOIN spasoi_ekz.spj SPJ&lt;br /&gt;
                      ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
                    JOIN spasoi_ekz.j J&lt;br /&gt;
                      ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
  AND J.nazvanie = LOWER(&#039;Рама 02-03&#039;)&lt;br /&gt;
  AND kolichestvo &amp;lt; 10&lt;br /&gt;
  AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM spasoi_ekz.j J JOIN spasoi_ekz.spj SPJ&lt;br /&gt;
                                        ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
                  WHERE J.nazvanie != LOWER(&#039;Рама 02-03&#039;)&lt;br /&gt;
                    AND X.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     nazvanie&lt;br /&gt;
 ----------------&lt;br /&gt;
  усиленная рама&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s S JOIN spasoi_ekz.spj SPJ&lt;br /&gt;
                      ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                    JOIN spasoi_ekz.p P&lt;br /&gt;
                      ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE cvet = &#039;белый&#039;&lt;br /&gt;
  AND NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_postavshika&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                            ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                  WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                    AND P.cvet != &#039;белый&#039;&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё один вариант этого же запроса&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                          ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                             AND cvet = &#039;белый&#039;&lt;br /&gt;
                        JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE S.nomer_postavshika NOT IN (&lt;br /&gt;
                                  SELECT nomer_postavshika&lt;br /&gt;
                                  FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                                            ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                               AND cvet != &#039;белый&#039;&lt;br /&gt;
                                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       imya&lt;br /&gt;
 -----------------&lt;br /&gt;
  Сэмвелл Тарли&lt;br /&gt;
  Рендилл Тарли&lt;br /&gt;
  Мелисса Флорент&lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования деталей и общее их количество для всех наименований деталей,изготавливаемых в одном городе.&lt;br /&gt;
&lt;br /&gt;
Формулировка запроса - просто вынос мозга...&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie, kol FROM P A, (&lt;br /&gt;
                                SELECT X.gorod, SUM(kolichestvo) as kol FROM P X, SPJ Y&lt;br /&gt;
                                WHERE Y.nomer_detali = X.nomer_detali&lt;br /&gt;
                                GROUP BY X.gorod&lt;br /&gt;
                                )B&lt;br /&gt;
WHERE A.gorod = B.gorod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих хотя бы одну белую деталь для изделия сназванием ‘Велосипед 01-04’ с объёмом поставки большим, чем средний объём поставки этого поставщика.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 01-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = X.nomer_postavshika);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BY S.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3741</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3741"/>
		<updated>2013-06-07T21:00:48Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 24 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования деталей и общее их количество для всех наименований деталей,изготавливаемых в одном городе.&lt;br /&gt;
&lt;br /&gt;
Формулировка запроса - просто вынос мозга...&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie, kol FROM P A, (&lt;br /&gt;
                                SELECT X.gorod, SUM(kolichestvo) as kol FROM P X, SPJ Y&lt;br /&gt;
                                WHERE Y.nomer_detali = X.nomer_detali&lt;br /&gt;
                                GROUP BY X.gorod&lt;br /&gt;
                                )B&lt;br /&gt;
WHERE A.gorod = B.gorod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих хотя бы одну белую деталь для изделия сназванием ‘Велосипед 01-04’ с объёмом поставки большим, чем средний объём поставки этого поставщика.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 01-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = X.nomer_postavshika);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BY S.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3740</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3740"/>
		<updated>2013-06-07T21:00:07Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 24 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования деталей и общее их количество для всех наименований деталей,изготавливаемых в одном городе.&lt;br /&gt;
&lt;br /&gt;
Формулировка запроса - просто вынос мозга...&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie, kol FROM P A, (&lt;br /&gt;
SELECT X.gorod, SUM(kolichestvo) as kol FROM P X, SPJ Y&lt;br /&gt;
WHERE Y.nomer_detali = X.nomer_detali&lt;br /&gt;
GROUP BY X.gorod)B&lt;br /&gt;
WHERE A.gorod =B.gorod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих хотя бы одну белую деталь для изделия сназванием ‘Велосипед 01-04’ с объёмом поставки большим, чем средний объём поставки этого поставщика.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 01-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = X.nomer_postavshika);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BY S.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3739</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3739"/>
		<updated>2013-06-07T19:46:50Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 25 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих хотя бы одну белую деталь для изделия сназванием ‘Велосипед 01-04’ с объёмом поставки большим, чем средний объём поставки этого поставщика.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 01-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = X.nomer_postavshika);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BY S.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3738</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3738"/>
		<updated>2013-06-07T19:46:32Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 25 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих хотя бы одну белую деталь для изделия сназванием ‘Велосипед 01-04’ с объёмом поставки большим, чем средний объём поставки этого поставщика.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = X.nomer_postavshika);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BY S.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3737</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3737"/>
		<updated>2013-06-07T19:45:57Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 25 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих хотя бы одну белую деталь для изделия сназванием ‘Велосипед 01-04’ с объёмом поставки большим, чем средний объём поставки этого поставщика.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S XJOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshikaJOIN P ON P.nomer_detali = SPJ.nomer_detaliJOIN J ON J.nomer_izdelia = SPJ.nomer_izdeliaWHERE P.cvet = &#039;белый&#039;AND J.nazvanie = &#039;Велосипед 03-04&#039;AND kolichestvo &amp;gt; (                  SELECT AVG(kolichestvo)                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = X.nomer_postavshika);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BY S.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3736</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3736"/>
		<updated>2013-06-07T19:40:11Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 27 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BY S.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3735</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3735"/>
		<updated>2013-06-07T19:39:46Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 27 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECTS.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ONSPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ONP.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ONJ.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHEREP.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
ANDJ.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  WHERE SPJ.nomer_postavshika = &#039;S1&#039;)&lt;br /&gt;
GROUP BYS.gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3734</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3734"/>
		<updated>2013-06-07T19:37:36Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 27 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT S.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                 WHERE SPJ.nomer_postavshika =&#039;S1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3733</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3733"/>
		<updated>2013-06-07T19:36:59Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 27 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования городов и среднее состояние поставщиков для каждого города, поставляющих детали с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем минимальный объём поставки, выполненной поставщиком с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECTS.gorod, AVG(S.sostoyanie) FROM S &lt;br /&gt;
JOIN SPJ ONSPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ONP.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ONJ.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHEREP.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
ANDJ.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT MIN(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                 WHERE SPJ.nomer_postavshika =&#039;S1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3732</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3732"/>
		<updated>2013-06-07T19:32:49Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND kolichestvo &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3731</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3731"/>
		<updated>2013-06-07T15:44:48Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 28 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdelia&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.ves &amp;gt; 10&lt;br /&gt;
AND Z.cvet = &#039;красный&#039;&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                SELECT K.nomer_postavshika FROM S K&lt;br /&gt;
                JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika&lt;br /&gt;
                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3730</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3730"/>
		<updated>2013-06-07T15:43:52Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 28 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входит хотя бы одна красная деталь весом больше 10 граммов, поставляемая только поставщиком с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.nazvanie FROM J XJOIN SPJ Y ON X.nomer_izdelia = Y.nomer_izdeliaJOIN P Z ON Z.nomer_detali = Y.nomer_detaliWHERE Z.ves &amp;gt; 10AND Z.cvet = &#039;красный&#039;AND NOT EXISTS (SELECT K.nomer_postavshika FROM S K		JOIN SPJ L ON K.nomer_postavshika = L.nomer_postavshika                WHERE L.nomer_detali = Z.nomer_detali&lt;br /&gt;
		AND K.nomer_postavshika!=&#039;S1&#039;);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3729</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3729"/>
		<updated>2013-06-07T15:20:27Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 26 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BY nomer_detali      &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3728</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3728"/>
		<updated>2013-06-07T15:19:58Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 26 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдатьномера красных деталей и количество поставок этих деталей.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT P.nomer_detali, COUNT(kolichestvo) FROM P,SPJ&lt;br /&gt;
WHERE P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
AND cvet =&#039;красный&#039;&lt;br /&gt;
GROUP BYnomer_detali&lt;br /&gt;
                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3727</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3727"/>
		<updated>2013-06-07T15:15:08Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 29 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3726</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3726"/>
		<updated>2013-06-07T15:14:43Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 29 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ON K.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3725</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3725"/>
		<updated>2013-06-07T15:14:14Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 29 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, которые входят только и только в состав изделия с названием ‘Штуцер 01-03’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM P X, SPJ Y&lt;br /&gt;
WHERE X.nomer_detali = Y.nomer_detali &lt;br /&gt;
AND NOT EXISTS (SELECT Z.nomer_izdelia FROM SPJ Z&lt;br /&gt;
                JOIN J K ONK.nomer_izdelia = Z.nomer_izdelia&lt;br /&gt;
                 WHERE K.nazvanie != &#039;Штуцер 01-03&#039;&lt;br /&gt;
                AND Z.nomer_detali=X.nomer_detali);                     &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3724</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3724"/>
		<updated>2013-06-07T15:06:26Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 30 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya&lt;br /&gt;
FROM spasoi_ekz.s S&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------------&lt;br /&gt;
  Оша&lt;br /&gt;
  Бран Старк&lt;br /&gt;
 (2 rows)&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3723</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3723"/>
		<updated>2013-06-07T14:25:09Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 23 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; в количестве большим 100 единиц в одной поставке и имеют состояние больше среднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3722</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3722"/>
		<updated>2013-06-07T14:22:59Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 23 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
Написать запрос SELECT: выдать именапоставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; вколичестве большим 100 единиц в одной поставке и имеют состояние большесреднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3721</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3721"/>
		<updated>2013-06-07T14:22:37Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 23 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать именапоставщиков, которые поставляют деталь с названием &amp;quot;Винт&amp;quot; вколичестве большим 100 единиц в одной поставке и имеют состояние большесреднего по их родному городу.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
JOIN P Z ON Z.nomer_detali = Y.nomer_detali&lt;br /&gt;
WHERE Z.nazvanie = &#039;Винт&#039;&lt;br /&gt;
AND Y.kolichestvo &amp;gt; 100&lt;br /&gt;
AND X.sostoyanie &amp;gt; (SELECT AVG(K.sostoyanie) FROM S K&lt;br /&gt;
                     WHERE K.gorod = X.gorod);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3720</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3720"/>
		<updated>2013-06-07T14:11:16Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 22 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3719</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3719"/>
		<updated>2013-06-07T14:07:58Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 21 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, для которых детали поставляет только и только поставщик с номером ‘S1’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nazvanie FROM J X, SPJ&lt;br /&gt;
WHERE X.nomer_izdelia = SPJ.nomer_izdelia &lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                 WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                AND nomer_izdelia=X.nomer_izdelia);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3718</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3718"/>
		<updated>2013-06-07T14:06:59Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 22 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCT nomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHERE Z.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3717</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3717"/>
		<updated>2013-06-07T14:06:33Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 22 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют только детали с номером &#039;P1&#039; для изделия с именем ‘Штуцер 01-02‘&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT DISTINCT imya FROM S X&lt;br /&gt;
JOIN SPJ Y ON X.nomer_postavshika=Y.nomer_postavshika&lt;br /&gt;
WHERE X.nomer_postavshika NOT IN (&lt;br /&gt;
                  SELECT DISTINCTnomer_postavshika FROM SPJ Z&lt;br /&gt;
                  WHEREZ.nomer_izdelia != &#039;Штуцер 01-02&#039;&lt;br /&gt;
                  AND Z.nomer_detali!=&#039;P1&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3716</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3716"/>
		<updated>2013-06-07T13:26:04Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 17 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3715</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3715"/>
		<updated>2013-06-07T13:25:26Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 16 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
Написать запрос SELECT: выдать цвета и для каждого цвета общее количество деталей, входящих в изделие с названием «Панно 01-03».&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT cvet, SUM(kolichestvo)&lt;br /&gt;
FROM P, SPJ&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE J.nazvanie = &#039;Панно 01-03&#039;&lt;br /&gt;
AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
GROUP BY cvet;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3714</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3714"/>
		<updated>2013-06-07T13:24:15Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 17 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
               SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
                      COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
                      AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
               FROM S, SPJ&lt;br /&gt;
               WHERE S.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
               GROUP BY S.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3713</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3713"/>
		<updated>2013-06-07T13:23:17Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 17 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков и количество сделанных ими поставок при условии, что среднее число деталей во всех этих поставках больше 1000.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT nom, count FROM (&lt;br /&gt;
        SELECT S.nomer_postavshikaas nom, &lt;br /&gt;
               COUNT(SPJ.nomer_postavshika) as count, &lt;br /&gt;
               AVG(SPJ.kolichestvo) as kol &lt;br /&gt;
        FROM S, SPJ&lt;br /&gt;
        WHERES.nomer_postavshika=SPJ.nomer_postavshika&lt;br /&gt;
        GROUP BYS.nomer_postavshika) A&lt;br /&gt;
WHERE kol &amp;gt; 1000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3712</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3712"/>
		<updated>2013-06-07T13:22:30Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECT AVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3711</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3711"/>
		<updated>2013-06-07T13:22:11Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, имеющих состояние больше 1000 и поставляющих деталь с названием &amp;quot;Гайка 01-01&amp;quot; для изделия с названием &amp;quot;Велосипед 03-04&amp;quot; в количестве (в поставке) большим, чем средний объём поставки, выполненной поставщиками с именем ‘Иванов’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT imya FROM S &lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000&lt;br /&gt;
AND P.nazvanie = &#039;Гайка 01-01&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Велосипед 03-04&#039;&lt;br /&gt;
AND sostoyanie &amp;gt; (&lt;br /&gt;
                  SELECTAVG(kolichestvo)&lt;br /&gt;
                  FROM SPJ&lt;br /&gt;
                  JOIN S ONSPJ.nomer_postavshika = S.nomer_postavshika &lt;br /&gt;
                  WHERE S.imya = &#039;Иванов&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3710</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3710"/>
		<updated>2013-06-07T13:21:19Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 19 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECT J.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3709</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3709"/>
		<updated>2013-06-07T13:20:56Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 19 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
Написать запрос SELECT: выдать названия красных деталей, которые входят только в изделие с названием &amp;quot;Рама 02-03&amp;quot; в количестве меньшем 10 единиц в поставке.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT X.nazvanie FROM P X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_detali = X.nomer_detali&lt;br /&gt;
JOIN J ON J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
WHERE X.cvet = &#039;красный&#039;&lt;br /&gt;
AND J.nazvanie = &#039;Рама 02-03&#039;&lt;br /&gt;
AND kolichestvo &amp;lt; 10&lt;br /&gt;
AND NOT EXISTS (&lt;br /&gt;
                  SELECTJ.nomer_izdelia&lt;br /&gt;
                  FROM J&lt;br /&gt;
                  JOIN SPJ ONSPJ.nomer_izdelia = J.nomer_izdelia &lt;br /&gt;
                  WHERE J.nazvanie != &#039;Рама 02-03&#039;&lt;br /&gt;
                  AND X.nomer_detali =SPJ.nomer_detali);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3708</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3708"/>
		<updated>2013-06-07T13:20:07Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 20 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3707</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3707"/>
		<updated>2013-06-07T13:19:35Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 20 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
       COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С не пустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих только белые детали.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT imya FROM S X&lt;br /&gt;
JOIN SPJ ON SPJ.nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
WHERE P.cvet = &#039;белый&#039;&lt;br /&gt;
AND NOT EXISTS (SELECT nomer_postavshika FROM SPJ&lt;br /&gt;
                JOIN P ON P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                WHERE nomer_postavshika = X.nomer_postavshika&lt;br /&gt;
               AND P.cvet != &#039;белый&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3700</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3700"/>
		<updated>2013-06-07T11:43:41Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika) - COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, &lt;br /&gt;
COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM S;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С непустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3699</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3699"/>
		<updated>2013-06-07T11:43:16Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/rMFDGHA25Yoac отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
  S14               | Рендилл Тарли    |    1111111 | Прага&lt;br /&gt;
  S13               | Сэмвелл Тарли    |     999999 | Прага&lt;br /&gt;
  S6                | Оша              |            | Москва&lt;br /&gt;
  S16               | Ходор            |            | Москва&lt;br /&gt;
  S15               | Мелисса Флорент  |     888888 | Стокгольм&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
  P17          | бумага               | белый         |    1 | Астрахань&lt;br /&gt;
 (17 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
  J10           | книга                 | Астрахань&lt;br /&gt;
 (10 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
  S13               | P17          | J10           |        1001&lt;br /&gt;
  S14               | P17          | J10           |        1111&lt;br /&gt;
  S15               | P17          | J10           |        1010&lt;br /&gt;
 (38 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса, каким его дал Григорьев на лекции, впоследствии исправив его:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali,&lt;br /&gt;
              SUM(kolichestvo) AS kol,&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                             -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны&lt;br /&gt;
                             -- Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
                             AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Ещё вариант&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) AS kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, SUM(sostoyanie)&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            GROUP BY nomer_postavshika HAVING MIN(kolichestvo) &amp;gt; 1000&lt;br /&gt;
                           )&lt;br /&gt;
GROUP BY gorod;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;!-- этот запрос выполняет не совсем то и не правильно&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT gorod, sost&lt;br /&gt;
FROM (&lt;br /&gt;
SELECT gorod, SUM(sostoyanie) AS sost, SUM(SPJ.kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj, spasoi_ekz.s&lt;br /&gt;
WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
    gorod   |   sum&lt;br /&gt;
 -----------+---------&lt;br /&gt;
  Прага     | 2111110&lt;br /&gt;
  Стокгольм |  888888&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali&lt;br /&gt;
FROM spasoi_ekz.spj SPJ, spasoi_ekz.s S, spasoi_ekz.j J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
  AND S.gorod = J.gorod&lt;br /&gt;
  AND J.nomer_izdelia = SPJ.nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
  P15&lt;br /&gt;
  P16&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
Написать &amp;lt;u&amp;gt;один&amp;lt;/u&amp;gt; запрос SELECT: выдать количества строк в таблице S (Поставщик) 1) с пустыми значениями и 2) непустыми значениями в столбце Состояние.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(nomer_postavshika)-COUNT(sostoyanie) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;FROM S;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT COUNT(Snull.*) AS &amp;quot;С пустым состоянием&amp;quot;, COUNT(Snotnull.sostoyanie) AS &amp;quot;С не пустым состоянием&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.s Snull RIGHT OUTER JOIN spasoi_ekz.s Snotnull&lt;br /&gt;
                                      ON Snull.nomer_postavshika = Snotnull.nomer_postavshika&lt;br /&gt;
                                         AND Snull.sostoyanie IS NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  С пустым состоянием | С непустым состоянием&lt;br /&gt;
 ---------------------+-----------------------&lt;br /&gt;
                    2 |                    14&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, которые поставляют детали только и только для изделия с номером &#039;J1&#039;.&lt;br /&gt;
&lt;br /&gt;
Несколько смущает формулировка &amp;quot;только и только&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE nomer_izdelia = &#039;J1&#039;&lt;br /&gt;
  AND SPJ.nomer_postavshika NOT IN (&lt;br /&gt;
                                    SELECT nomer_postavshika&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_izdelia != &#039;J1&#039;&lt;br /&gt;
                                   );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Петров Пётр&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать наименования изделий, для которых детали поставляют только те поставщики, у которых состояние больше 1000000 у.е.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.j J&lt;br /&gt;
                          ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
WHERE sostoyanie &amp;gt; 1000000&lt;br /&gt;
  AND SPJ.nomer_izdelia NOT IN (&lt;br /&gt;
                                SELECT nomer_izdelia&lt;br /&gt;
                                FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                          ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                WHERE sostoyanie &amp;lt; 1000000&lt;br /&gt;
                               );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
       nazvanie&lt;br /&gt;
 --------------------&lt;br /&gt;
  процессор&lt;br /&gt;
  уникальное изделие&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3688</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3688"/>
		<updated>2013-06-05T16:15:22Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/91d_8vGH5UmwP отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S6                | Оша              |      15000 | Москва&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
 (12 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
 (9 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
 (35 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali&lt;br /&gt;
              SUM(kolichestvo) AS kol&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
  ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
     -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
     AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) as kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT gorod, sost FROM(&lt;br /&gt;
                        SELECT gorod, SUM(sostoyanie) as sost, SUM(SPJ.kolichestvo) from SPJ,S&lt;br /&gt;
                        WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                        GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
                       ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
   gorod   |  sost&lt;br /&gt;
 ----------+--------&lt;br /&gt;
  Москва   | 105000&lt;br /&gt;
    (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali FROM SPJ,S,J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
AND S.gorod = J.gorod&lt;br /&gt;
AND J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
     P15&lt;br /&gt;
     P16&lt;br /&gt;
   (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3687</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3687"/>
		<updated>2013-06-05T16:15:05Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/91d_8vGH5UmwP отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S6                | Оша              |      15000 | Москва&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
 (12 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
 (9 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
 (35 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali&lt;br /&gt;
              SUM(kolichestvo) AS kol&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
  ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
     -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
     AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) as kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT gorod, sost FROM(&lt;br /&gt;
                        SELECT gorod, SUM(sostoyanie) as sost, SUM(SPJ.kolichestvo) from SPJ,S&lt;br /&gt;
                        WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                        GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
                       ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
   gorod   |  sost&lt;br /&gt;
 ----------+--------&lt;br /&gt;
  Москва   | 105000&lt;br /&gt;
    (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali FROM SPJ,S,JWHERE SPJ.nomer_postavshika = S.nomer_postavshikaAND S.gorod = J.gorodAND J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
     P15&lt;br /&gt;
     P16&lt;br /&gt;
   (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3686</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3686"/>
		<updated>2013-06-05T16:09:54Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/91d_8vGH5UmwP отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S6                | Оша              |      15000 | Москва&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
 (12 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
 (9 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
 (35 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali&lt;br /&gt;
              SUM(kolichestvo) AS kol&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
  ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
     -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
     AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) as kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT gorod, sost FROM(&lt;br /&gt;
                        SELECT gorod, SUM(sostoyanie) as sost, SUM(SPJ.kolichestvo) from SPJ,S&lt;br /&gt;
                        WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                        GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
                       ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
   gorod   |  sost&lt;br /&gt;
 ----------+--------&lt;br /&gt;
  Москва   | 105000&lt;br /&gt;
    (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali FROM SPJ,S,J&lt;br /&gt;
WHERE SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
AND S.gorod = J.gorod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
     P1&lt;br /&gt;
     P15&lt;br /&gt;
     P16&lt;br /&gt;
   (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3685</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3685"/>
		<updated>2013-06-05T16:09:20Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/91d_8vGH5UmwP отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S6                | Оша              |      15000 | Москва&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
 (12 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
 (9 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
 (35 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali&lt;br /&gt;
              SUM(kolichestvo) AS kol&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
  ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
     -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
     AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) as kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT gorod, sost FROM(&lt;br /&gt;
                        SELECT gorod, SUM(sostoyanie) as sost, SUM(SPJ.kolichestvo) from SPJ,S&lt;br /&gt;
                        WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                        GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
                       ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
   gorod   |  sost&lt;br /&gt;
 ----------+--------&lt;br /&gt;
  Москва   | 105000&lt;br /&gt;
    (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей, поставляемых для какого-либо изделия поставщиком, проживающим в том же городе, где изготавливается это изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali FROM SPJ,S,JWHERE SPJ.nomer_postavshika = S.nomer_postavshikaAND S.gorod = J.gorod&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali&lt;br /&gt;
 --------------&lt;br /&gt;
     P1&lt;br /&gt;
     P15&lt;br /&gt;
     P16&lt;br /&gt;
   (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3684</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3684"/>
		<updated>2013-06-05T15:21:58Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/91d_8vGH5UmwP отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S6                | Оша              |      15000 | Москва&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
 (12 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
 (9 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
 (35 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali&lt;br /&gt;
              SUM(kolichestvo) AS kol&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
  ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
     -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
     AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, kol FROM (&lt;br /&gt;
       SELECT nomer_detali, SUM(kolichestvo) as kol, COUNT(DISTINCT nomer_izdelia) = 1&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_izdelia) = 1;&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | kol&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P10          |   3&lt;br /&gt;
  P11          |   5&lt;br /&gt;
  P12          |  13&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P4           |  10&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P8           |  25&lt;br /&gt;
  P9           |   1&lt;br /&gt;
   (11 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT gorod, sost FROM(&lt;br /&gt;
                        SELECT gorod, SUM(sostoyanie) as sost, SUM(SPJ.kolichestvo) from SPJ,S&lt;br /&gt;
                        WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                        GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
                       ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
   gorod   |  sost&lt;br /&gt;
 ----------+--------&lt;br /&gt;
  Москва   | 105000&lt;br /&gt;
    (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3683</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3683"/>
		<updated>2013-06-05T15:13:30Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/91d_8vGH5UmwP отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S6                | Оша              |      15000 | Москва&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
 (12 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
 (9 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
 (35 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali&lt;br /&gt;
              SUM(kolichestvo) AS kol&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1&lt;br /&gt;
    ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
  ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
     -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
     AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | sum&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P9           |   1&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P8           |  25&lt;br /&gt;
 (7 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT gorod, sost FROM(&lt;br /&gt;
                        SELECT gorod, SUM(sostoyanie) as sost, SUM(SPJ.kolichestvo) from SPJ,S&lt;br /&gt;
                        WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                        GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
                       ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
   gorod   |  sost&lt;br /&gt;
 ----------+--------&lt;br /&gt;
  Москва   | 105000&lt;br /&gt;
    (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3682</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3682"/>
		<updated>2013-06-05T15:11:06Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/91d_8vGH5UmwP отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S6                | Оша              |      15000 | Москва&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
 (12 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
 (9 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
 (35 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;, kol AS &amp;quot;Сколько штук поставляется&amp;quot; FROM (&lt;br /&gt;
       SELECT nomer_detali&lt;br /&gt;
              SUM(kolichestvo) AS kol&lt;br /&gt;
              COUNT(DISTINCT nomer_postavshika)&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется &lt;br /&gt;
 --------------+---------------------------&lt;br /&gt;
  P1           |          15 &lt;br /&gt;
  P12          |          7 &lt;br /&gt;
  P4           |          10 &lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
  ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
     -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
     AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | sum&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P9           |   1&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P8           |  25&lt;br /&gt;
 (7 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT gorod, sost FROM(&lt;br /&gt;
                        SELECT gorod, SUM(sostoyanie) as sost, SUM(SPJ.kolichestvo) from SPJ,S&lt;br /&gt;
                        WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                        GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
                       ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
   gorod   |  sost&lt;br /&gt;
 ----------+--------&lt;br /&gt;
  Москва   | 105000&lt;br /&gt;
    (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3681</id>
		<title>SQL-запросы к экзамену по СПАСОИ (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=SQL-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83_%D0%BF%D0%BE_%D0%A1%D0%9F%D0%90%D0%A1%D0%9E%D0%98_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3681"/>
		<updated>2013-06-05T15:06:47Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Билет 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right; clear:both; margin-right:1.0em;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Билет экзамена по [[:Категория:Структурное проектирование АСОИ (10 семестр) | СПАСОИ]] состоит из двух частей:&lt;br /&gt;
# теория;&lt;br /&gt;
# SQL-запрос.&lt;br /&gt;
&lt;br /&gt;
На этой странице собраны все сформированные запросы по билетам.&lt;br /&gt;
&lt;br /&gt;
== Схема БД ==&lt;br /&gt;
&lt;br /&gt;
Схема БД используется всё [[СПАСОИ_(10)_-_Лекция_№8_-_SQL#Некоторые возможности языка SQL | та же]], что была в прошлом семестре и на лекциях.&lt;br /&gt;
&lt;br /&gt;
Для написания запросов и проверки их выполнения создана БД в СУБД [http://www.postgresql.org/ PostgreSQL].&lt;br /&gt;
&lt;br /&gt;
Скрипт создания можно загрузить [http://yadi.sk/d/91d_8vGH5UmwP отсюда].&lt;br /&gt;
&lt;br /&gt;
=== Таблицы БД ===&lt;br /&gt;
&lt;br /&gt;
==== Поставщики ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.s;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika |       imya       | sostoyanie |   gorod&lt;br /&gt;
 -------------------+------------------+------------+------------&lt;br /&gt;
  S5                | Мелисандра       |      65000 | Мадрид&lt;br /&gt;
  S2                | Бран Старк       |      60000 | Мурманск&lt;br /&gt;
  S1                | Якен Хгар        |    1500000 | Йокогама&lt;br /&gt;
  S7                | Сирио Форель     |    1500000 | Йокогама&lt;br /&gt;
  S6                | Оша              |      15000 | Москва&lt;br /&gt;
  S4                | Джейме Ланнистер |     750000 | Лондон&lt;br /&gt;
  S3                | Серсея Ланнистер |    1200000 | Лондон&lt;br /&gt;
  S8                | Тирион Ланнистер |       2571 | Манчестер&lt;br /&gt;
  S9                | Иванов           |      35000 | Мытищи&lt;br /&gt;
  S10               | Русе Болтон      |      44444 | Баренцбург&lt;br /&gt;
  S11               | Петров Иван      |      35000 | Мытищи&lt;br /&gt;
  S12               | Петров Пётр      |      35000 | Мытищи&lt;br /&gt;
 (12 rows)&lt;br /&gt;
&lt;br /&gt;
==== Детали ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.p;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_detali |       nazvanie       |     cvet      | ves  |      gorod&lt;br /&gt;
 --------------+----------------------+---------------+------+-----------------&lt;br /&gt;
  P9           | подставка            | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P10          | стойка               | синий         | 2000 | Нижний Новгород&lt;br /&gt;
  P11          | абажур               | синий         |  400 | Нижний Новгород&lt;br /&gt;
  P1           | гайка                | чёрный        |   20 | Лондон&lt;br /&gt;
  P2           | шуруп                | чёрный        |    5 | Лондон&lt;br /&gt;
  P3           | ось                  | белый         | 5000 | Эдинбург&lt;br /&gt;
  P4           | зубчатое колесо      | чёрный        |   50 | Эдинбург&lt;br /&gt;
  P6           | транзистор           | коричневый    |    2 | Токио&lt;br /&gt;
  P7           | печатная плата       | зелёный       |  200 | Токио&lt;br /&gt;
  P8           | диод                 | коричневый    |    1 | Токио&lt;br /&gt;
  P12          | универсальная деталь | универсальный |    1 | Париж&lt;br /&gt;
  P13          | уникальная деталь    | уникальный    |    1 | Бостон&lt;br /&gt;
  P14          | болт                 | серый         |   20 | Ижевск&lt;br /&gt;
  P15          | рама                 | красный       | 3000 | Манчестер&lt;br /&gt;
  P16          | колесо               | белый         | 1500 | Манчестер&lt;br /&gt;
  P5           | втулка               | серый         |  350 | Манчестер&lt;br /&gt;
 (16 rows)&lt;br /&gt;
&lt;br /&gt;
==== Изделия ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.j;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia |       nazvanie        |      gorod&lt;br /&gt;
 ---------------+-----------------------+-----------------&lt;br /&gt;
  J1            | автомобиль            | Магнитогорск&lt;br /&gt;
  J2            | процессор             | Зеленоград&lt;br /&gt;
  J3            | торшер                | Нижний Новгород&lt;br /&gt;
  J4            | универсальное изделие | Париж&lt;br /&gt;
  J5            | уникальное изделие    | Бостон&lt;br /&gt;
  J6            | велосипед 01/23       | Манчестер&lt;br /&gt;
  J7            | изделие из болтов     | Челябинск&lt;br /&gt;
  J8            | шкаф                  | Ярославль&lt;br /&gt;
  J9            | рама 02-01            | Череповец&lt;br /&gt;
 (9 rows)&lt;br /&gt;
&lt;br /&gt;
==== Сборки ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT * FROM spasoi_ekz.spj;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika | nomer_detali | nomer_izdelia | kolichestvo&lt;br /&gt;
 -------------------+--------------+---------------+-------------&lt;br /&gt;
  S1                | P6           | J2            |          20&lt;br /&gt;
  S1                | P7           | J2            |           5&lt;br /&gt;
  S2                | P1           | J1            |           4&lt;br /&gt;
  S6                | P4           | J1            |           2&lt;br /&gt;
  S6                | P5           | J1            |           6&lt;br /&gt;
  S3                | P9           | J3            |           1&lt;br /&gt;
  S4                | P10          | J3            |           1&lt;br /&gt;
  S5                | P11          | J3            |           1&lt;br /&gt;
  S2                | P4           | J1            |           8&lt;br /&gt;
  S6                | P3           | J1            |          50&lt;br /&gt;
  S7                | P8           | J2            |          25&lt;br /&gt;
  S1                | P12          | J4            |           1&lt;br /&gt;
  S2                | P12          | J4            |           1&lt;br /&gt;
  S3                | P12          | J4            |           1&lt;br /&gt;
  S4                | P12          | J4            |           1&lt;br /&gt;
  S5                | P12          | J4            |           1&lt;br /&gt;
  S7                | P12          | J4            |           1&lt;br /&gt;
  S7                | P2           | J1            |           1&lt;br /&gt;
  S6                | P2           | J1            |           9&lt;br /&gt;
  S6                | P12          | J4            |           7&lt;br /&gt;
  S1                | P13          | J5            |          14&lt;br /&gt;
  S6                | P14          | J1            |        9000&lt;br /&gt;
  S2                | P14          | J1            |           3&lt;br /&gt;
  S6                | P1           | J1            |          12&lt;br /&gt;
  S8                | P15          | J6            |           1&lt;br /&gt;
  S8                | P16          | J6            |           2&lt;br /&gt;
  S3                | P5           | J6            |          10&lt;br /&gt;
  S10               | P2           | J8            |           4&lt;br /&gt;
  S9                | P14          | J8            |          25&lt;br /&gt;
  S8                | P1           | J7            |          16&lt;br /&gt;
  S9                | P14          | J7            |           3&lt;br /&gt;
  S11               | P10          | J3            |           2&lt;br /&gt;
  S12               | P15          | J1            |           3&lt;br /&gt;
  S11               | P11          | J3            |           4&lt;br /&gt;
  S10               | P14          | J9            |           5&lt;br /&gt;
 (35 rows)&lt;br /&gt;
&lt;br /&gt;
== Готовые запросы ==&lt;br /&gt;
&lt;br /&gt;
Всё в процессе написания, потому многие запросы через некоторое время будут переписаны в более короткую и правильную форму.&lt;br /&gt;
&lt;br /&gt;
=== Билет 1 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, которые поставляют, по крайней мере, все те детали, которые поставляет поставщик с номером &#039;S2&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM spasoi_ekz.spj SPJX&lt;br /&gt;
WHERE NOT EXISTS (&lt;br /&gt;
                  SELECT nomer_detali&lt;br /&gt;
                  FROM spasoi_ekz.spj SPJY&lt;br /&gt;
                  WHERE nomer_postavshika = &#039;S2&#039;&lt;br /&gt;
                    AND NOT EXISTS (&lt;br /&gt;
                                    SELECT *&lt;br /&gt;
                                    FROM spasoi_ekz.spj&lt;br /&gt;
                                    WHERE nomer_postavshika = SPJX.nomer_postavshika&lt;br /&gt;
                                      AND nomer_detali = SPJY.nomer_detali&lt;br /&gt;
                                   )&lt;br /&gt;
                 );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
  S2&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 2 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, поставляемых более чем одним поставщиком.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali AS &amp;quot;Номер детали&amp;quot;,&lt;br /&gt;
       SUM(kolichestvo) AS &amp;quot;Сколько штук поставляется&amp;quot;,&lt;br /&gt;
       COUNT(DISTINCT nomer_postavshika) AS &amp;quot;Сколько у неё поставщиков&amp;quot;&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(DISTINCT nomer_postavshika) &amp;gt; 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  Номер детали | Сколько штук поставляется | Сколько у неё поставщиков&lt;br /&gt;
 --------------+---------------------------+--------------------------&lt;br /&gt;
  P1           |                        15 |                         2&lt;br /&gt;
  P12          |                         7 |                         7&lt;br /&gt;
  P4           |                        10 |                         2&lt;br /&gt;
 (3 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 3 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера поставщиков, поставляющих детали с номером &#039;P1&#039; для какого-либо изделия в количестве (в поставке) большим, чем средний объём поставок деталей с номером &#039;P2&#039; для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_postavshika&lt;br /&gt;
FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj&lt;br /&gt;
                     WHERE nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                       AND nomer_detali = &#039;P2&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_postavshika&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT *&lt;br /&gt;
      FROM spasoi_ekz.spj&lt;br /&gt;
      WHERE nomer_izdelia IN(&lt;br /&gt;
                             SELECT nomer_izdelia&lt;br /&gt;
                             FROM spasoi_ekz.spj&lt;br /&gt;
                             WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                            )&lt;br /&gt;
        AND nomer_izdelia IN(&lt;br /&gt;
	                     SELECT nomer_izdelia&lt;br /&gt;
	                     FROM spasoi_ekz.spj&lt;br /&gt;
	                     WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
	                    )&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE nomer_detali = &#039;P1&#039; AND kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM (&lt;br /&gt;
       SELECT *&lt;br /&gt;
       FROM spasoi_ekz.spj&lt;br /&gt;
       WHERE nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                             )&lt;br /&gt;
         AND nomer_izdelia IN(&lt;br /&gt;
                              SELECT nomer_izdelia&lt;br /&gt;
                              FROM spasoi_ekz.spj&lt;br /&gt;
                              WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
                             )&lt;br /&gt;
      ) B&lt;br /&gt;
 WHERE nomer_detali = &#039;P2&#039;&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_postavshika&lt;br /&gt;
 -------------------&lt;br /&gt;
  S6&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 4 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий, для которых детали поставляет только поставщик с номером ‘S1’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nomer_izdelia&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
WHERE nomer_izdelia IN(&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.spj&lt;br /&gt;
                       WHERE nomer_postavshika = &#039;S1&#039;&lt;br /&gt;
                      )&lt;br /&gt;
  AND nomer_izdelia NOT IN(&lt;br /&gt;
                           SELECT nomer_izdelia&lt;br /&gt;
                           FROM spasoi_ekz.spj&lt;br /&gt;
                           WHERE nomer_postavshika != &#039;S1&#039;&lt;br /&gt;
                          );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia&lt;br /&gt;
 ---------------&lt;br /&gt;
  J5&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 5 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &amp;quot;Болт&amp;quot; в количестве (в поставке) большим, чем средний объём всех поставок деталей с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                           ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                        JOIN spasoi_ekz.p P&lt;br /&gt;
                           ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                              AND nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                     SELECT AVG(kolichestvo)&lt;br /&gt;
                     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
                                               ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                  AND SPJ.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но без JOIN&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.s&lt;br /&gt;
WHERE nomer_postavshika IN (&lt;br /&gt;
                            SELECT nomer_postavshika&lt;br /&gt;
                            FROM spasoi_ekz.spj&lt;br /&gt;
                            WHERE nomer_detali = (&lt;br /&gt;
                                                  SELECT nomer_detali&lt;br /&gt;
                                                  FROM spasoi_ekz.p&lt;br /&gt;
                                                  WHERE LOWER(nazvanie) = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                                                 )&lt;br /&gt;
                              AND kolichestvo &amp;gt; (&lt;br /&gt;
                                                 SELECT AVG(kolichestvo)&lt;br /&gt;
                                                 FROM spasoi_ekz.spj&lt;br /&gt;
                                                 WHERE nomer_detali = &#039;P1&#039;&lt;br /&gt;
                                                )&lt;br /&gt;
                           );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  imya&lt;br /&gt;
 ------&lt;br /&gt;
  Оша&lt;br /&gt;
  Иванов&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 6 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия деталей, поставляемых поставщиком, проживающим в том же городе, где изготавливаются эти детали, для изделия с названием ‘Велосипед 01/23’.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT DISTINCT nazvanie&lt;br /&gt;
FROM spasoi_ekz.S S, spasoi_ekz.p P, spasoi_ekz.spj SPJ&lt;br /&gt;
WHERE S.gorod = P.gorod&lt;br /&gt;
  AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
  AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
  AND nomer_izdelia = (&lt;br /&gt;
                       SELECT nomer_izdelia&lt;br /&gt;
                       FROM spasoi_ekz.j&lt;br /&gt;
                       WHERE nazvanie = LOWER(&#039;Велосипед 01/23&#039;)&lt;br /&gt;
                      );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nazvanie&lt;br /&gt;
 ----------&lt;br /&gt;
  рама&lt;br /&gt;
  колесо&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 7 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия изделий, куда входят детали с названием &#039;Болт&#039;, поставляемых поставщиками с именем &#039;Иванов&#039;, в количестве (в поставке) большим, чем средний объём поставок для этого изделия.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM spasoi_ekz.j&lt;br /&gt;
WHERE nomer_izdelia IN (&lt;br /&gt;
                        SELECT nomer_izdelia&lt;br /&gt;
                        FROM (spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
                                                   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
                                                      AND imya = &#039;Иванов&#039;&lt;br /&gt;
                                                 JOIN spasoi_ekz.p P&lt;br /&gt;
                                                   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
                                                      AND nazvanie = LOWER(&#039;Болт&#039;)) A&lt;br /&gt;
                        WHERE kolichestvo &amp;gt; (&lt;br /&gt;
                                             SELECT AVG(kolichestvo)&lt;br /&gt;
                                             FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
                                                                       ON SPJ.nomer_izdelia = A.nomer_izdelia&lt;br /&gt;
                                            )&lt;br /&gt;
                       );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;Этот же запрос, но длиннее и нерациональней&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nazvanie&lt;br /&gt;
FROM (&lt;br /&gt;
      SELECT J.nazvanie, kolichestvo&lt;br /&gt;
      FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
      WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
        AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
        AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
        AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
        AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
     ) A&lt;br /&gt;
WHERE kolichestvo &amp;gt;&lt;br /&gt;
(&lt;br /&gt;
 SELECT AVG(kolichestvo)&lt;br /&gt;
 FROM spasoi_ekz.spj&lt;br /&gt;
 WHERE nomer_izdelia IN(&lt;br /&gt;
                        SELECT J.nomer_izdelia&lt;br /&gt;
                        FROM spasoi_ekz.s S, spasoi_ekz.p P, spasoi_ekz.j J, spasoi_ekz.spj SPJ&lt;br /&gt;
                        WHERE J.nomer_izdelia = SPJ.nomer_izdelia&lt;br /&gt;
                          AND P.nomer_detali = SPJ.nomer_detali&lt;br /&gt;
                          AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
                          AND S.imya = &#039;Иванов&#039;&lt;br /&gt;
                          AND S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                       )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
      nazvanie&lt;br /&gt;
 -------------------&lt;br /&gt;
  шкаф&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 8 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера изделий и общее количество деталей для них, поставляемых поставщиками с именем &#039;Петров&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_izdelia, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.s S&lt;br /&gt;
  ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
     -- так как &amp;quot;поставщикАМИ&amp;quot; и возможны Иван Петров и Петров Иван, то LIKE %Петров%&lt;br /&gt;
     AND imya LIKE &#039;%Петров%&#039;&lt;br /&gt;
GROUP BY nomer_izdelia;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_izdelia | sum&lt;br /&gt;
 ---------------+-----&lt;br /&gt;
  J3            |   6&lt;br /&gt;
  J1            |   3&lt;br /&gt;
 (2 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 9 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать номера деталей и общее их количество для всех номеров деталей, которые входят только в одно изделие.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT nomer_detali, SUM(kolichestvo)&lt;br /&gt;
FROM spasoi_ekz.spj&lt;br /&gt;
GROUP BY nomer_detali HAVING COUNT(nomer_izdelia) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
  nomer_detali | sum&lt;br /&gt;
 --------------+-----&lt;br /&gt;
  P9           |   1&lt;br /&gt;
  P7           |   5&lt;br /&gt;
  P3           |  50&lt;br /&gt;
  P16          |   2&lt;br /&gt;
  P13          |  14&lt;br /&gt;
  P6           |  20&lt;br /&gt;
  P8           |  25&lt;br /&gt;
 (7 rows)&lt;br /&gt;
&lt;br /&gt;
=== Билет 10 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать имена поставщиков, поставляющих детали с названием &#039;Болт&#039; для изделия с названием &#039;Рама 02-01&#039; в количестве (в поставке) большим, чем минимальное значение поставки детали с номером &#039;P1&#039;.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT imya&lt;br /&gt;
FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.j J&lt;br /&gt;
			   ON SPJ.nomer_izdelia = J.nomer_izdelia&lt;br /&gt;
			      AND J.nazvanie = LOWER(&#039;Рама 02-01&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.p P&lt;br /&gt;
			   ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
			      AND P.nazvanie = LOWER(&#039;Болт&#039;)&lt;br /&gt;
			 JOIN spasoi_ekz.s S&lt;br /&gt;
			   ON SPJ.nomer_postavshika = S.nomer_postavshika&lt;br /&gt;
WHERE kolichestvo &amp;gt; (&lt;br /&gt;
		     SELECT MIN(kolichestvo)&lt;br /&gt;
		     FROM spasoi_ekz.spj SPJ JOIN spasoi_ekz.p P&lt;br /&gt;
					       ON SPJ.nomer_detali = P.nomer_detali&lt;br /&gt;
					          AND P.nomer_detali = &#039;P1&#039;&lt;br /&gt;
                    );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
     imya&lt;br /&gt;
 -------------&lt;br /&gt;
  Русе Болтон&lt;br /&gt;
 (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 11 ===&lt;br /&gt;
&lt;br /&gt;
Написать запрос SELECT: выдать названия городов и суммарное состояние проживающих в каждом городе поставщиков, у которых минимальный объём поставки деталей больше 1000.&lt;br /&gt;
&lt;br /&gt;
Текст запроса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT gorod, sost FROM(&lt;br /&gt;
                        SELECT gorod, SUM(sostoyanie) as sost, SUM(SPJ.kolichestvo) from SPJ,S&lt;br /&gt;
                        WHERE S.nomer_postavshika = SPJ.nomer_postavshika&lt;br /&gt;
                        GROUP BY S.gorod HAVING SUM(SPJ.kolichestvo) &amp;gt; 1000&lt;br /&gt;
                       ) A;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
   gorod   |  sost&lt;br /&gt;
 ----------+--------&lt;br /&gt;
  Москва   | 105000&lt;br /&gt;
    (1 row)&lt;br /&gt;
&lt;br /&gt;
=== Билет 12 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 13 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 14 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 15 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 16 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 17 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 18 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 19 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 20 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 21 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 22 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 23 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 24 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 25 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 26 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 27 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 28 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 29 ===&lt;br /&gt;
&lt;br /&gt;
=== Билет 30 ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Структурное проектирование АСОИ (10 семестр)]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
	<entry>
		<id>https://iu5bmstu.ru/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE_%D0%A2%D0%9F_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3026</id>
		<title>Курсовая по ТП (10 семестр)</title>
		<link rel="alternate" type="text/html" href="https://iu5bmstu.ru/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE_%D0%A2%D0%9F_(10_%D1%81%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80)&amp;diff=3026"/>
		<updated>2013-03-21T19:31:22Z</updated>

		<summary type="html">&lt;p&gt;Odemwingie: /* Готовые курсовые */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Курсовая работа по [[:Категория:Технологии программирования (10 семестр) | Технологиям программирования]].&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
Написать на языке Java программную систему, построенную по [http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D1%91%D1%85%D0%B7%D0%B2%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0 трёхуровневой архитектуре]:&lt;br /&gt;
* БД;&lt;br /&gt;
* сервер-приложений;&lt;br /&gt;
* тонкий клиент (обычный веб-браузер, в котором будет выполняться ваше веб-приложение).&lt;br /&gt;
&lt;br /&gt;
Делать можно по одному или группами до 3 человек. Если делают двое, то проект должен быть в 2 раза сложнее, чем для одного. Если трое - в три. Также, если делаете группой, то желательно согласовать то, что будете делать, с преподавателем.&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
=== Программная часть ===&lt;br /&gt;
&lt;br /&gt;
* должна быть реализована регистрация пользователей и их аутентификация. А может и не должна, но звучало что-то такое;&lt;br /&gt;
* должно быть взаимодействие с БД (СУБД любая, какую хотите);&lt;br /&gt;
* можно писать под Android, хотя и не очень желательно, потому что это не совсем Java.&lt;br /&gt;
&lt;br /&gt;
=== Документация ===&lt;br /&gt;
&lt;br /&gt;
Монструозные РПЗ писать не надо, комплект документации из ТЗ и кучи руководств не надо. Надо только 3-4 UML диаграммы и 1-2 страницы описания работы программы своими словами.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSession.html работа с HTTP-сессиями] - нужно для передачи данных залогиненного пользователя между сервлетами, а также для передачи любой другой информации;&lt;br /&gt;
* [http://www.stardeveloper.com/articles/display.html?article=2001062001&amp;amp;page=1 пример работы с сессией].&lt;br /&gt;
&lt;br /&gt;
== Готовые курсовые ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Год !! Описание !! Что нужно из ПО !! Ссылка&lt;br /&gt;
|-&lt;br /&gt;
| 2013 || Полуэкспертная система поиска сериалов || СУБД PostgreSQL (схема БД есть), Apache Tomcat, NetBeans || [http://yadi.sk/d/GETaFBfP3FzKx загрузить]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Категория:10 семестр]]&lt;br /&gt;
[[Категория:Курсовые]]&lt;/div&gt;</summary>
		<author><name>Odemwingie</name></author>
	</entry>
</feed>