Упражнение 124
Среди пассажиров, которые пользовались услугами не менее двух авиакомпаний, найти тех, кто совершил одинаковое количество полётов самолетами каждой из этих авиакомпаний. Вывести имена таких пассажиров.
Эта задача порождает массу ошибочных решений, которые я разделяю на две группы. К первой группе относятся решения, связанные с неверным прочтением формулировки. Например, пытаются найти двух пассажиров, которые летали бы одинаково двумя или большим числом компаний.
Поясню, что рассматривать следует отдельного пассажира и подсчитываеть число полетов, которое он сделал каждой из авиакомпаний, которыми летал.
Что дальше? Рассмотрим теперь пример из второй группы ошибочных решений:
Консоль
Выполнить
Сразу отметим ошибочное DISTINCT name, которое устраняет возможных однофамильцев. Однако не это здесь главное. В предложении FROM соединяются два одинаковых запроса

Консоль
Выполнить
которые, как и сказано выше, подсчитывают для каждого пассажира число полетов, которое он совершил самолетами каждой из компаний.
Соединяются эти запросы по следующим условиям:
- пассажир тот же самый;
- компании разные;
- число полетов совпадает.
Итак, если пассажир совершил, скажем, компанией Aeroflot 3 полета, и также 3 полета он совершил самолетами компании Don_avia, то такой пассажир удовлетворяет условиям соединения и будет выведен в результатах запроса. Если пассажир летал всего двумя компаниями, то это — правильный результат. А если компании три?
Если в результате рассмотренного выше подзапроса мы получим
Итак, число полетов пассажира каждой из компаний, которыми он летал, должно находиться в пропорции 1:1. 1.
4. Аэрофлот

Схема БД состоит из четырех отношений: Company (ID_comp, name) Trip(trip_no, ID_comp, plane, town_from, town_to, time_out, time_in) Passenger(ID_psg, name) Pass_in_trip(trip_no, date, ID_psg, place) Таблица Company содержит идентификатор и название компании, осуществляющей перевозку пассажиров. Таблица Trip содержит информацию о рейсах: номер рейса, идентификатор компании, тип самолета, город отправления, город прибытия, время отправления и время прибытия. Таблица Passenger содержит идентификатор и имя пассажира. Таблица Pass_in_trip содержит информацию о полетах: номер рейса, дата вылета (день), идентификатор пассажира и место, на котором он сидел во время полета. При этом следует иметь в виду, что — рейсы выполняются ежедневно, а длительность полета любого рейса менее суток; — время и дата учитывается относительно одного часового пояса; — время отправления и прибытия указывается с точностью до минуты; — среди пассажиров могут быть однофамильцы (одинаковые значения поля name, например, Bruce Willis); — номер места в салоне – это число с буквой; число определяет номер ряда, буква (a – d) – место в ряду слева направо в алфавитном порядке; — связи и ограничения показаны на схеме данных.
5. Окраска

Схема базы данных состоит из трех отношений: utQ (Q_ID int,Q_NAME varchar(35)) utV (V_ID int,V_NAME varchar(35),V_COLOR char(1)) utB (B_Q_ID int,B_V_ID int,B_VOL tinyint, B_DATETIME datetime) Таблица utQ содержит идентификатор и название квадрата, цвет которого первоначально черный. Таблица utV содержит идентификатор, название и цвет баллончика с краской. Таблица utB содержит информацию об окраске квадрата баллончиком: идентификатор квадрата, идентификатор баллончика, количество краски и время окраски. При этом следует иметь в виду, что: — баллончики с краской могут быть трех цветов — красный V_COLOR=’R’, зеленый V_COLOR=’G’, голубой V_COLOR=’B’ (латинские буквы). — объем баллончика равен 255 и первоначально он полный; — цвет квадрата определяется по правилу RGB, т.е. R=0,G=0,B=0 — черный, R=255, G=255, B=255 — белый; — запись в таблице закрасок utB уменьшает количество краски в баллончике на величину B_VOL и соответственно увеличивает количество краски в квадрате на эту же величину; — значение 0 < B_VOL <= 255 - Количество краски одного цвета в квадрате не превышает 255, а количество краски в баллончике не может быть меньше нуля. =>
Список заданий
- Номера заданий: 1, 3, 8, 19
- Номера заданий: 2, 9, 10, 20
- Номера заданий: 4, 11, 13, 21
- Номера заданий: 5, 12, 14, 22
- Номера заданий: 6, 15, 16, 23
- Номера заданий: 7, 17, 18, 14.
Упражнения по SQL
SELECT (обучающий этап) задачи по SQL запросам 120 штук, DML 10 шт. Дистанционное обучение языку баз данных SQL. Интерактивные упражнения и тестирование по операторам SELECT,INSERT,UPDATE,DELETE языка SQL. SQL remote education. SQL statements exercises. Подзапросы, Соединение таблиц, Функции SQL, Введение в SQL, Скачать книги по SQL. Команды SQL,CREATE SEQUENCE,CREATE SYNONYM,CREATE USER,CREATE VIEW,Create Table,DROP,GRANT,INSERT,REVOKE,SET ROLE,SET TRANSACTION,SQL ALTER TABLE,SQL команды.
суббота, 18 апреля 2020 г.
Определить имена разных пассажиров, которые летали только между двумя городами (туда и/или обратно).
Задание: 102 (Serge I: 2003-04-29)
Определить имена разных пассажиров, которые летали
только между двумя городами (туда и/или обратно).
select name from passenger
where id_psg in
(
select id_psg from trip t,pass_in_trip pit
where t.trip_no=pit.trip_no
group by id_psg
having count(distinct case when town_from)
Популярные сообщения
- SELECT (обучающий этап) задачи по SQL запросам
- Найдите номера моделей и цены всех продуктов (любого типа), выпущенных производителем B (латинская буква).
- Найдите производителей самых дешевых цветных принтеров. Вывести: maker, price
- Найдите пары моделей PC, имеющих одинаковые скорость и RAM.
- Одной из характеристик корабля является половина куба калибра его главных орудий (mw). С точностью до 2 десятичных знаков определите среднее значение mw для кораблей каждой страны, у которой есть корабли в базе данных.
- Найдите класс, имя и страну для кораблей из таблицы Ships, имеющих не менее 10 орудий.
- Найдите производителей принтеров, которые производят ПК с наименьшим объемом RAM и с самым быстрым процессором среди всех ПК, имеющих наименьший объем RAM.
- Перечислите номера моделей любых типов, имеющих самую высокую цену по всей имеющейся в базе данных продукции.
- В предположении, что приход и расход денег на каждом пункте приема фиксируется не чаще одного раза в день [т.е. первичный ключ (пункт, дата)], написать запрос с выходными данными (пункт, дата, приход, расход). Использовать таблицы Income_o и Outcome_o.
- Найдите классы, в которые входит только один корабль из базы данных (учесть также корабли в Outcomes). SELECT c
Команда SELECT
- SQL Подзапросы
- SQL Соединение таблиц
- SQL Строки и выражения
- Команда SELECT Раздел FROM
- Команда SELECT Раздел GROUP BY
- Команда SELECT Раздел HAVING
- Команда SELECT Раздел ORDER BY
- Команда SELECT Раздел WHERE
Команды SQL
Условия в SQL
Функции SQL
Основа SQL
- Введение в SQL
- Индексы ROWID в Oracle
- Типы данных SQL
- Типы привилегий
Меню SQL
Ссылки
Примеры
Архив блога
- ▼2020 (121)
- ▼апреля (121)
- Для авиакомпаний, самолеты которой выполнили хотя .
- Сгруппировать все окраски по дням, месяцам и годам.
- Выборы Директора музея ПФАН проводятся только в ви.
- Задание: 117 (Serge I: 2013-11-29) По таблице Cla.
- Считая, что каждая окраска длится ровно секунду, о.
- Рассмотрим равнобочные трапеции, в каждую из котор.
- Определить имена разных пассажиров, которым чаще д.
- Сколько каждой краски понадобится, чтобы докрасить.
- Какое максимальное количество черных квадратов мож.
- Найти НЕ белые и НЕ черные квадраты, которые окраш.
- Определить имена разных пассажиров, когда-либо лет.
- Вывести: 1. Названия всех квадратов черного или б.
- Реставрация экспонатов секции «Треугольники» музея.
- Для пятого по счету пассажира из числа вылетевших .
- Пусть v1, v2, v3, v4, . представляет последовате.
- Статистики Алиса, Белла, Вика и Галина нумеруют ст.
- Для каждого класса крейсеров, число орудий которог.
- Выбрать три наименьших и три наибольших номера рей.
- Определить имена разных пассажиров, которые летали.
- Таблица Printer сортируется по возрастанию поля code.
- Написать запрос, который выводит все операции прих.
- Рассматриваются только таблицы Income_o и Outcome_.
- Вывести список ПК, для каждого из которых результа.
- Отобрать из таблицы Laptop те строки, для которых .
- При условии, что баллончики с красной краской испо.
- На основании информации из таблицы Pass_in_Trip, д.
- Для семи последовательных дней, начиная от минимал.
- Для каждой компании, перевозившей пассажиров, подс.
- Выбрать все белые квадраты, которые окрашивались т.
- Используя таблицу Product, определить количество п.
- Вывести все строки из таблицы Product, кроме трех .
- Найти производителей, у которых больше всего модел.
- Среди тех, кто пользуется услугами только одной ко.
- Считая, что пункт самого первого вылета пассажира .
- Для каждого производителя перечислить в алфавитном.
- Найти производителей, которые выпускают только при.
- Для каждой компании подсчитать количество перевезе.
- Определить названия всех кораблей из таблицы Ships.
- В наборе записей из таблицы PC, отсортированном по.
- Из таблицы Outcome получить все записи за тот меся.
- Найти производителей компьютерной техники, у котор.
- Определить пассажиров, которые больше других време.
- Для каждого сражения определить первый и последний.
- Определить дни, когда было выполнено максимальное .
- Определить время, проведенное в полетах, для пасса.
- Для каждого корабля из таблицы Ships указать назва.
- Вывести классы всех кораблей России (Russia). Если.
- Для каждой страны определить сражения, в которых н.
- Среди тех, кто пользуется услугами только какой-ни.
- Найти тех производителей ПК, все модели ПК которых.
- Укажите сражения, в которых участвовало по меньшей.
- По таблицам Income и Outcome для каждого пункта пр.
- Найти количество маршрутов, которые обслуживаются .
- Найти количество маршрутов, которые обслуживаются .
- Для всех дней в интервале с 01/04/2003 по 07/04/20.
- Пронумеровать уникальные пары из Pro.
- Используя таблицы Income и Outcome, для каждого пу.
- Определить имена разных пассажиров, когда-либо лет.
- Посчитать остаток денежных средств на всех пунктах.
- Посчитать остаток денежных средств на всех пунктах.
- Посчитать остаток денежных средств на начало дня 1.
- Посчитать остаток денежных средств на каждом пункт.
- Для каждого типа продукции и каждого производителя.
- Для классов, имеющих потери в виде потопленных кор.
- Для каждого класса определите число кораблей этого.
- Для каждого класса определите год, когда был спуще.
- С точностью до 2-х десятичных знаков определите ср.
- Определите среднее число орудий для классов линейн.
- Определить названия всех кораблей из таблицы Ships.
- Найдите названия кораблей, имеющих наибольшее числ.
- Найдите сражения, в которых участвовали корабли кл.
- Найдите названия кораблей с орудиями калибра 16 дю.
- Найдите классы кораблей, в которых хотя бы один ко.
- Пронумеровать строки из таблицы Product в следующе.
- Для каждого корабля, участвовавшего в сражении при.
- Найдите названия всех кораблей в базе данных, сост.
- Найдите названия всех кораблей в базе данных, начи.
- Укажите сражения, которые произошли в годы, не сов.
- Найдите названия кораблей, потопленных в сражениях.
- Для ПК с максимальным кодом из таблицы PC вывести .
- Найдите класс, имя и страну для кораблей из таблиц.
- Найдите класс, имя и страну для кораблей из таблиц.
- Найдите корабли, «сохранившиеся для будущих сражен.
- Найдите страны, имевшие когда-либо классы обычных .
- Найдите классы, в которые входит только один кораб.
- Перечислите названия головных кораблей, имеющихся .
- В таблице Product найти модели, которые состоят то.
- По Вашингтонскому международному договору от начал.
- Укажите корабли, потопленные в сражениях в Северно.
- Одной из характеристик корабля является половина к.
- Для классов кораблей, калибр орудий которых не мен.
- В предположении, что приход и расход денег на кажд.
- В предположении, что приход и расход денег на кажд.
- Найдите средний размер диска ПК (одно значение для.
- Найдите средний размер диска ПК каждого из тех про.
- Найдите среднюю цену ПК и ПК-блокнотов, выпущенных.
- Найдите производителей принтеров, которые производ.
- Перечислите номера моделей любых типов, имеющих са.
- Найдите производителей, которые производили бы как.
- Для каждого значения скорости ПК, превышающего 600.
- ►2019 (130)
- ►апреля (18)
- ►марта (2)
- ►февраля (22)
- ►января (88)
- ►2018 (2)
- ►декабря (2)
- ►2017 (22)
- ►февраля (22)
- 12 идей
- 21 ошибка программиста PHP
- Абстрактные классы БД
- Азбука MySQL
- База данных Компьютерная фирма
- база sql server
- Безопасный и удобный поиск в mySQL
- Введение в SQL
- Введение в SQLite
- Вложенные запросы SQL
- Внешние объединения SQL
- Время выполнения SQL запросов
- Вступление в PHP и MySQL
- господа!
- Задания для самостоятельной работы
- Знакомство с WinBinder
- Индексы ROWID в Oracle
- Интервью Расмуса Лердорфа для SitePoint
- Использование в запросе нескольких источников записей
- Использование ключевых слов SOME | ANY и ALL с предикатами сравнения
- Использование mysqli
- Использование PEAR для доступа к базе данных
- Как вывести по N строк из каждой группы?
- Как выводить в запросе все столбцы кроме одного
- Как добавить новый столбец в таблицу между существующими столбцами?
- Как объединить данные из двух столбцов в один без использования UNION и JOIN?
- Как подсчитать накопительный итог?
- как получать пассивный доход
- Как решать задачи на SQL
- Как удалить дубликаты строк из таблицы?
- Как удалить дубликаты строк при наличии первичного ключа?
- Как установить шрифт в Windows и macOS
- Код ошибки: 1062. Дублируемая запись ‘PRIMARY’
- Команда SELECT Раздел FROM
- Команда SELECT Раздел GROUP BY
- Команда SELECT Раздел HAVING
- Команда SELECT Раздел ORDER BY
- Команда SELECT Раздел WHERE
- Команды DML
- Конвертация баз MySQL в dBase
- Конвертация базы данных из DBASE в MySQL
- которые должен знать каждый программист
- Краткое вступление в SQLite
- Ловля ошибки в PHP
- не перечисляя их?
- Обработка запросов к БД при помощи PEAR::XML
- Оператор выбора SELECT
- Оператор SELECT
- Оператор UPDATE
- Операторы манипулирования данными SQL
- Операторы модификации данных
- Оптимальное использование MySQL
- Оптимизация запросов в MySQL
- Оптимизация программ на PHP
- Оптимизация работы с MySQL
- Основные команды SQL
- Основы SQL на примере задачи
- Основы SQL на примере задачи и Решение
- ОШИБКА 1044 (42000): доступ запрещен для пользователя ‘@’ localhost ‘в базу данных’ db ‘
- Ошибка 1067 при попытке запустить MySQL
- Переименование столбцов и вычисления в результирующем наборе
- Пишем PHP код
- Получение итоговых значений
- Постреляционная СУБД Postgres95
- Построение таблиц «Один-к-разным»
- Предикаты (часть I)
- Преобразование типов
- Приложение 1. Описание учебных баз данных
- Применение агрегатных функций и вложенных запросов в операторе выбора
- Проектирование Интернет-приложений
- Работа с базами данных. Начало
- Работа с БД. Анализ логов
- Работа с MySQL
- Работа с MySQL: Подробнее
- Работа с MySQL. Деревья
- Работа с MySQL. Новостная лента для странички
- Работа с NULL-значениями
- Работа с Oracle в PHP
- Работа с SQLite
- Разбиваем большие запросы на страницы
- Рекурсивные SQL запросы
- Связи таблиц в MySQL
- Скачать книги по SQL
- Структура SQL
- Структурированный язык запросов SQL
- Тест знаний SQL — Основы
- Типы данных SQL
- Типы данных SQL /89
- Типы привилегий
- Тонкая настройка MySQL
- Традиционные операции над множествами и оператор SELECT
- устойчивый к ошибкам
- Функции работы со строками в MS SQL SERVER 2005
- Функции Transact-SQL для обработки даты/времени
- Функция SQL FIRST ()
- Хороший стиль программирования
- Хранение древовидных структур в Базах данных
- часть 1
- язык sql
- Як встановити або видалити шрифт у Windows
- Active Directory Sync
- ADODB – русская документация
- CHECK
- CREATE SEQUENCE
- CREATE SYNONYM
- Create Table
- CREATE USER
- CREATE VIEW
- DML
- DROP
- FOREIGN KEY
- GRANT
- INSERT
- ms sql
- MySQL для начинающих
- MySQL и оптимизация
- MySQL Administrator
- MySQL error 1045
- MySQL error 1054 и как с ней бороться
- MySQL error 1064
- MySQL error 1093 и 1235
- MySQL. Установка. Настройка. Использование
- Oracle и PHP — это очень просто!
- PHP против ASP — В примерах
- PostgreSQL 8.3.0
- PostgreSQL версии 8.0
- PRIMARY KEY
- REVOKE
- SELECT (обучающий этап) задачи по SQL запросам
- SET ROLE
- SET TRANSACTION
- SQL — запросы и их обработка с помощью PHP
- SQL — запросы PHP
- sql 2008
- sql запрос
- SQL команды
- SQL Подзапросы
- SQL Соединение таблиц
- SQL Строки и выражения
- SQL ALTER TABLE
- SQL And & Or
- SQL AVG
- SQL COUNT
- SQL DELETE
- SQL SELECT
- SQL UNION
- SQL UPDATE
- UNIQUE
- WinBinder. Создание форм
- XQuery и виртуализация
SqlOtvet
Помощь в решении заданий ресурса sql-ex.ru и многое другое.
понедельник, 8 февраля 2016 г.
Решение задача 72 сайта sql-ex.ru
Текст задания:
Среди тех, кто пользуется услугами только какой-нибудь одной компании, определить имена разных пассажиров, летавших чаще других.
Вывести: имя пассажира и число полетов.Решение:
select TOP 1 WITH TIES name, c3 from passenger
join
(select c1, max(c3) c3 from
(
select pass_in_trip.ID_psg c1, Trip.ID_comp c2, count(*) c3 from pass_in_trip
join trip on trip.trip_no=pass_in_trip.trip_no
group by pass_in_trip.ID_psg, Trip.ID_comp
) as t
group by c1
having count(*)=1) as tt
on ID_psg=c1
order by c3 descАвтор: username на 05:12
- ▼апреля (121)
