Приведите примеры исходных данных для которых результаты выполнения обеих программ будут одинаковыми

Содержание

Наиболее используемым, но и самым сложным оператором является оператор выборки SELECT. Он позволяет производить выборку данных из таблиц и преобразовывать к нужному виду полученные результаты.

20 дек. 2020 · 9 минуты на чтение

Результатом выполнения оператора SELECT является таблица. К этой таблице может быть снова применен оператор SELECT и т.д., то есть такие операторы могут быть вложены друг в друга. Вложенные операторы SELECT называют подзапросами.

Синтаксис оператора SELECT использует следующие основные предложения:

SELECT FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ]

Кратко пояснить смысл предложений оператора SELECT можно следующим образом:

  • SELECT — выбрать данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями
  • FROM — из перечисленных таблиц, в которых расположены эти столбцы
  • WHERE — где строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк
  • GROUP BY — группируя по указанному перечню столбцов с тем, чтобы получить для каждой группы единственное значение
  • HAVING — имея в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп
  • ORDER BY — сортируя по указанному перечню столбцов

Как видно из синтаксиса рассматриваемого оператора, обязательными являются только два первых предложения: SELECT и FROM .

Консолидация (сборка) данных из нескольких таблиц в Excel

Рассмотрим каждое предложение оператора SELECT .

Спонсор поста

База данных для примеров

Дальше будет много примеров и логично постоянно использовать одну и ту же БД. Так что на основании базы данных ниже будут продемонстрированы все примеры, не только в этой статье, но и в других.

Постановка задачи: пусть требуется разработать БД для предметной области «Поставка деталей»!

Требуется хранить следующую информацию:

  • О поставщиках (P) pnum, pname
  • О деталях (D) pnum, dname, dprice
  • О поставках (PD) volume

Значения таблицы P

pnumpname
1 Иванов
2 Петров
3 Сидоров
4 Кузнецов

Значения таблицы D

pnumdnamedprice
1 Болт 10
2 Гайка 20
3 Винт 30

Значения таблицы PD

pnumdnumvolume
1 1 100
1 2 100
1 3 300
2 1 150
1 2 250
3 1 1000

Предложение SELECT

После служебного слова SELECT перечисляются имена столбцов, значения которых будут входить в результат выполнения запроса.

06. Низкоуровневое программирование. Ассемблер. Пример программы. [Универсальный программист]

Столбцы в результирующей таблице размещаются в том порядке, в котором они были указаны в предложении SELECT . Имена столбцов указываются через запятую.

Если имя столбца содержит пробелы или разделители, то его необходимо заключить в квадратные скобки.

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

Предложение FROM

В предложении FROM перечисляются имена таблиц, которые содержат столбцы, указанные после слова SELECT .

Пример 1.
Вывести список наименований деталей из таблицы D (“Детали”).

SELECT dname FROM D

Пример 2.
Получить всю информацию из таблицы D (“Детали”).

Получить результат можно двумя способами:

    Явным указанием всех столбцов таблицы.

SELECT dnum, dname, dprice FROM D
SELECT * FROM D

В результате и первого и второго запроса получаем новую таблицу, представляющую собой полную копию таблицы D (“Детали”).

Можно осуществить выбор отдельных столбцов и их перестановку.

Пример 3.
Получить информацию о наименовании и номере поставщика.

SELECT pname, pnum FROM P

Пример 4.
Определить номера поставщиков, которые поставляют детали в настоящее время (то есть номера тех поставщиков, которые присутствуют в таблице PD (“Поставки”)).

SELECT pnum FROM PD

pnum
1
1
1
2
2
3

Дополнительно о SELECT

Теперь, когда мы научились делать простые запросы с SELECT и FROM , можно ненадолго снова вернуться к SELECT .

Агрегатные функции

В операторе SELECT можно использовать агрегатные функции, которые дают единственное значение для целой группы строк в таблице.

Агрегатная функция записывается в следующем виде: ()

Пользователю доступны следующие агрегатные функции:

  • SUM ‑ вычисляет сумму множества значений указанного столбца;
  • COUNT ‑ вычисляет количество значений указанного столбца;
  • MIN / MAX ‑ определяет минимальное/максимальное значение в указанном столбце;
  • AVG ‑ вычисляет среднее арифметическое значение множества значений столбца;
  • FIRST / LAST ‑ определяет первое/последнее значение в указанном столбце.

Пример 5.
Определить общий объем поставляемых деталей.

SELECT SUM(volume) FROM PD

Expr1000
2000

Вычисляемые столбцы

Столбцы результирующей таблицы, которых не существовало в исходных таблицах, называются вычисляемыми. Таким столбцам СУБД присваивает системные имена, что не всегда является удобным.

При вычислении результатов любой агрегатной функции СУБД сначала исключает все NULL -значения, после чего требуемая операция применяется к оставшимся значениям.

Для функции COUNT возможен особый вариант использования — COUNT(*) . Его назначение состоит в подсчете всех строк в результирующей таблице, включая NULL -значения.

Читайте также:
Программа кто лучше дети

Следует запомнить, что агрегатные функции нельзя вкладывать друг в друга. Такая конструкция работать не будет: MAX(SUM(VOLUME))

Переименование столбца

Язык SQL позволяет задавать новые имена столбцам результирующей таблицы, для чего используется операция AS . Переименование также используют для изменения сложных имен столбцов таблицы.

Например, присвоить новое имя вычисляемому столбцу в предыдущем примере позволит выполнение следующего запроса.

SELECT SUM(volume) AS SUM FROM PD

Пример 6.
Определить количество поставщиков, которые поставляют детали в настоящее время.

SELECT COUNT(pnum) AS COUNT FROM PD

Несмотря на то, что реальное число поставщиков деталей в таблице PD равно 3, СУБД возвращает число 6. Такой результат объясняется тем, что СУБД подсчитывает все строки в таблице PD, не обращая внимание на то, что в строках есть одинаковые значения.

Операция DISTINCT

Если до применения агрегатной функции необходимо исключить дублирующиеся значения, следует перед именем столбца указать ключевое слово DISTINCT .

SELECT COUNT(DISTINCT pnum) AS COUNT FROM PD
DISTINCT можно задать только один раз для одного предложения SELECT .

Противоположностью DISTINCT является операция ALL . Она имеет противоположное действие «показать все строки таблицы» и предполагается по умолчанию.

Операция TOP

Итоговый набор записей, получаемых после выполнения запроса можно ограничить первыми N строками или первыми N процентами от общего количества строк результата.

Для этого используется операция TOP , которая записывается в предложении SELECT следующим образом: SELECT TOP N [PERCENT]

Пример 7.
Определить номера первых двух деталей таблицы D.

SELECT TOP 2 dnum FROM D

Стандарт SQL требует, чтобы при сортировке NULL -значения трактовались либо как превосходящие, либо как уступающие по сравнению со всеми остальными значениями. Так как конкретный вариант стандартом не оговаривается, то в зависимости от используемой СУБД при сортировке NULL -значения следуют до или после остальных значений. В MS SQL Server NULL -значения считаются уступающими по сравнению с остальными значениями.

Рандомный блок

Предложение WHERE

После служебного слова WHERE указываются условия выбора строк, помещаемых в результирующую таблицу. Существуют различные типы условий выбора:

Типы условий выбора:

  • Сравнение значений атрибутов со скалярными выражениями, другими атрибутами или результатами вычисления выражений.
  • Проверка значения на принадлежность множеству.
  • Проверка значения на принадлежность диапазону.
  • Проверка строкового значения на соответствие шаблону.
  • Проверка на наличие null -значения.

Сравнение

В языке SQL используются традиционные операции сравнения = , <> , < , , >= .

В качестве условия в предложении WHERE можно использовать сложные логические выражения, использующие атрибуты таблиц, константы, скобки, операции AND , OR , отрицание NOT .

Пример 8.
Определить номера деталей, поставляемых поставщиком с номером 2.

SELECT dnum FROM PD WHERE pnum = 2

Пример 9.
Получить информацию о поставщиках Иванов и Петров.

SELECT * FROM P WHERE pname=’Иванов’ OR pname=’Петров’
Строковые значения атрибутов заключаются в апострофы.

Проверка на принадлежность множеству

Операция IN проверяет, принадлежит ли значение атрибута заданному множеству.

Пример 10.
Получить информацию о поставщиках ‘Иванов’ и ‘Петров’.

SELECT * FROM P WHERE pname IN (‘Иванов’,’Петров’)

Пример 11.
Получить информацию о деталях с номерами 1 и 2.

SELECT * FROM D WHERE dnum IN (1, 2)

Проверка на принадлежность диапазону

Операция BETWEEN определяет минимальную и максимальную границу диапазона, в которое должно попадать значение атрибута. Обе границы считаются принадлежащими диапазону.

Пример 12.
Определить номера деталей, с ценой от 10 до 20 рублей.

SELECT dnum FROM D WHERE dprice BETWEEN 10 AND 20

Пример 13.
Вывести наименования поставщиков, начинающихся с букв от ‘К’ по ‘П’.

SELECT pname FROM P WHERE pname BETWEEN ‘К’ AND ‘Р’
Сравнение символов

Буква Р в условии запроса объясняется тем, что строки сравниваются посимвольно. Для каждого символа при этом определяется код. Для нашего случая справедливо условие: П < Петров < Р

Проверка строкового значения на соответствие шаблону

Операция LIKE используется для поиска подстрок. Значения столбца, указываемого перед служебным словом LIKE сравниваются с задаваемым после него шаблоном. Форматы шаблонов различаются в конкретных СУБД.

Для СУБД MS SQL Server:

  • Символ % заменяет любое количество любых символов.
  • Символ _ заменяет один любой символ.
  • [] ‑ вместо символа строки может быть подставлен один любой символ из множества возможных, указанных в ограничителях.
  • [^] ‑ вместо символа строки может быть подставлен любой из символов кроме символов из множества, указанного в ограничителях.

Множество символов в квадратных скобках можно указывать через запятую, либо в виде диапазона.

Пример 14.
Вывести фамилии поставщиков, начинающихся с буквы И .

SELECT pname FROM P WHERE pname LIKE ‘И%’

Пример 15.
Вывести фамилии поставщиков, начинающихся с букв от К по П .

SELECT pname FROM P WHERE dname LIKE ‘[К-П]%’

Проверка на наличие null -значения

Операции IS NULL и IS NOT NULL используются для сравнения значения атрибута со значением NULL .

Пример 16.
Определить наименования деталей, для которых не указана цена.

SELECT dname FROM D WHERE dprice IS NULL

Пример 17.
Определить номера поставщиков, для которых указано наименование.

SELECT pnum FROM P WHERE pname IS NOT NULL

Предложение GROUP BY

Использование GROUP BY позволяет разбивать таблицу на логические группы и применять агрегатные функции к каждой из этих групп. В результате получим единственное значение для каждой группы.

Обычно предложение GROUP BY применяют, если формулировка задачи содержит фразу «для каждого…», «каждому..» и т.п.

Пример 18.
Определить суммарный объем деталей, поставляемых каждым поставщиком.

SELECT pnum, SUM(VOLUME) AS SUM FROM PD GROUP BY pnum

pnumsum
1 600
2 400
3 1000
Читайте также:
Кто утверждает программу обучения сотрудников организации в сфере под фт

Выполнение запроса можно описать следующим образом: СУБД разбивает таблицу PD на три группы, в каждую из групп помещаются строки с одинаковым значением номера поставщика. Затем к каждой из полученных групп применяется агрегатная функция SUM, что дает единственное итоговое значение для каждой группы.

Рассмотрим два похожих примера. В примере 19 определяется минимальный объем поставки каждого поставщика. В примере 20 определяется объем минимальной поставки среди всех поставщиков.

Пример 19:

SELECT pnum, MIN(VOLUME) AS MIN FROM PD GROUP BY pnum

Пример 20:

SELECT MIN(VOLUME) AS MIN FROM P

Результаты запросов представлены в следующей таблице:

pnumminmax
1 100 100
2 150
3 1000

Следует обратить внимание, что в первом примере мы можем вывести номера поставщиков, соответствующие объемам поставок, а во втором примере – не можем.

Все имена столбцов, перечисленные после ключевого слова SELECT должны присутствовать и в предложении GROUP BY , за исключением случая, когда имя столбца является аргументом агрегатной функции.

Однако в предложении GROUP BY могут быть указаны имена столбцов, не перечисленные в списке вывода после ключевого слова SELECT .

Если предложение GROUP BY расположено после предложения WHERE , то группы создаются из строк, выбранных после применения WHERE .

Пример 21.
Для каждой из деталей с номерами 1 и 2 определить количество поставщиков, которые их поставляют, а также суммарный объем поставок деталей.

SELECT dnum, COUNT(pnum) AS COUNT, SUM(volume) AS SUM FROM PD WHERE dnum=1 OR dnum=2 GROUP BY dnum

dnumCOUNTSUM
1 3 1250
2 2 450

Чтобы организовать вложенные группировки, после GROUP BY следует указать несколько группирующих столбцов через запятую. В этом случае реальный подсчет данных будет происходить по той группе, которая указана последней.

Предложение HAVING

Предложение HAVING определяет критерий, согласно которому, определенные группы, сформированные с помощью предложения GROUP BY , исключаются из результирующей таблицы.

Выполнение предложения HAVING сходно с выполнением предложения WHERE . Но предложение WHERE исключает строки до того, как выполняется группировка, а предложение HAVING — после. Поэтому предложение HAVING может содержать агрегатные функции, а предложение WHERE — не может.

Пример 22.
Определить номера поставщиков, поставляющих в сумме более 500 деталей.

SELECT pnum, SUM(volume) AS SUM FROM PD GROUP BY pnum HAVING SUM(volume) > 500

pnumSUM
1 600
3 1000

Пример 23.
Определить номера поставщиков, которые поставляют только одну деталь.

SELECT pnum, COUNT(dnum) AS COUNT FROM PD GROUP BY pnum HAVING COUNT(dnum) = 1

Предложение ORDER BY

При выполнении запроса СУБД возвращает строки в случайном порядке. Предложение ORDER BY позволяет упорядочить выходные данные запроса в соответствии со значениями одного или нескольких выбранных столбцов.

Можно задать возрастающий — ASC (от слова Ascend) или убывающий — DESC (от слова Descend) порядок сортировки. По умолчанию принят возрастающий порядок сортировки.

Пример 24.
Отсортировать таблицу PD в порядке возрастания номеров поставщиков, а строки с одинаковыми значениями pnum отсортировать в порядке убывания объема поставок.

SELECT pnum, volume, dnum FROM PD ORDER BY pnum ASC, volume DESC

pnumvolumednum
1 300 3
1 200 2
1 100 1
2 250 2
2 150 1
3 1000 1

Операцию TOP удобно применять после сортировки результирующего набора с помощью предложения ORDER BY .

Пример 25.
Определить номера первых двух деталей с наименьшей стоимостью.

SELECT TOP 2 dnum FROM D ORDER BY dprice ASC

Следует отметить, что если в таблице D будут две детали без указания цены, то именно их и отобразит предыдущий запрос. Поэтому при наличии NULL -значений их необходимо исключать с помощью предложения WHERE .

SELECT TOP 2 dnum FROM D WHERE dprice IS NOT NULL ORDER BY dprice ASC

Заключение

В статье было рассмотрен оператор выборки SELECT . Знание оператора SELECT является ключевым при написании любых SQL-запросов. Он позволяет производить выборку данных из таблиц и преобразовывать результаты в соответствии с нужными выражениями и функциями.

Результатом выполнения оператора SELECT является таблица, которую можно вложить в другой оператор SELECT в качестве подзапроса.

Синтаксис оператора SELECT содержит несколько предложений, из которых обязательными являются только SELECT и FROM . Остальные предложения, такие как WHERE , GROUP BY , HAVING и ORDER BY , могут использоваться по желанию для уточнения выборки данных.

Источник: struchkov.dev

Построение сетевого графика

Построение сетевого графика

Каждый менеджер проекта сталкивается с такой типовой для него задачей, как построение сетевого графика. В настоящее время этот процесс полностью автоматизирован и, как правило, у менеджера не возникает больших проблем. Уже давно нет необходимости чертить на бумаге графики, высчитывать ранние и поздние начала или окончания задач, соединять задачи стрелками, вычислять длину критического пути. ИСУП успешно решает все эти задачи.

Однако, без понимания основ и правил построения сетевых графиков менеджеры проектов довольно-таки часто совершают ошибки. Несмотря на то, что современные ИСУП достаточно «умные» и подстраховывают менеджера проекта во многих моментах, связанных с расписанием проекта, тем не менее, остаются «слепые» зоны, которые лежат только в зоне ответственности менеджера проекта.

Для того, чтобы получить настоящую пользу от ИСУП, ей надо уметь грамотно пользоваться, как и любым другим инструментом.

Что такое сетевой график

Сетевой график (англ., Project Network) — это динамическая модель проекта, отражающая зависимость и последовательность выполнения работ проекта, связывающая их завершение во времени с учётом затрат ресурсов и стоимости работ.

Сетевой график может быть построен в двумя способами:

  • Вершины графа отображают состояния некоторого объекта (например, строительства), а дуги — работы, ведущиеся на этом объекте.
  • Вершины графа отражают работы, а связи между ними — зависимости между работами.
Читайте также:
Авторские права на все виды программ для эвм охраняются так же как

Правила построения сетевого граифка

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

  • каждая работа в сетевом графике должна выходить из события, которое означает окончание всех работ, результат которых необходим для начала работы;
  • событие, обозначающее начало определенной работы не должно включать в себя результаты работ, завершение которых не требуется для начала этой работы;
  • сетевой график строится слева направо, и каждое событие с большим порядковым номером должно быть расположено правее предыдущего. Стрелки, изображающие работы, должны также располагаться слева направо.

Исходные работы

Построение графика начинается с изображения работ, не требующих для своего начала результатов выполнения других работ. Такие работы можно назвать исходными, так как все остальные работы комплекса будут выполняться только после их полного выполнения.

В зависимости от специфики планируемого комплекса, исходных работ может быть несколько, а может быть только одна. Размещая исходные работы необходимо учитывать, что на сетевом графике, должно быть только одно исходное событие.

На рисунке 1 показан пример начала сетевого графика с одной исходной работой (работа A), а на рисунке 2 пример начала сетевого графика с тремя исходными работами (работы A, B, C).

Сетевой график с одной исходной работой

Сетевой график с тремя исходными задачами

Последовательные работы

Если работа B должна выполняться только после выполнения работы A, то на графике это изображается в виде последовательной цепочки работ и событий.

Последовательно выполняемые работы

Работы, выполняемые после одной и той же работы

Если для выполнения нескольких работ, например, B и C необходим результат одной и той же работы A, то на графике это изображается «параллельными» стрелками, выходящими из события, являющегося результатом выполнения работы А.

Работы, выполняемые после одной и той же работы

Работа, выполняемая после нескольких работ

Если для выполнения работы C необходим результат работ A и B, то на графике это изображается «параллельными» стрелками, входящими в событие, после достижения которого следует работа C.

Работа, выполняемая после нескольких работ

Работы, выполняемые после частичного выполнения других работ

Если для выполнения работ B и C необходим промежуточный результат работы A, то работа A разбивается на подзадачи таким образом, чтобы первая ее подзадача (A1) выполнялась до получения промежуточного результата, необходимого для начала работы B, а вторая подзадача выполнялась до получения промежуточного результата, необходимого для начала работы C, последующая же часть A3, может выполняться параллельно с работами A1 и A2.

Работы, выполняемые после частичного выполнения других работ

Работы, имеющие общие начальное и конечное события

Два соседних события могут быть объединены одной и только одной работой. Для изображения параллельных работ на сетевом графике вводится так называемое промежуточное событие и фиктивная работа.

Работы, имеющие общие начальное и конечное события

Использование фиктивных работ

Если выполнение работы D возможно только после получения совокупного результата работ A и B, а выполнение работы C – после получения только результата работы А, то в сетевом графике необходимо ввести дополнительное событие и фиктивную работу.

Использование фиктивных работ

«Хвосты» и «тупики»

В сети не должно быть «тупиков», т.е. промежуточных событий, из которых не выходит ни одна работа. На рисунке 9 тупиковым событием является событие 6.

Также не должно быть «хвостов», т.е. промежуточных событий, которым не предшествует хотя бы одна работа. На рисунке 9 хвостовым событием является событие 3.

Приведите примеры исходных данных для которых результаты выполнения обеих программ будут одинаковыми

Циклы

На сетевом графике не должно быть циклов, состоящих из взаимосвязанных работ, создающих замкнутую цепь — цепочка работ D->F->G на рисунке 10. Данная ситуация скорее всего свидетельствует об ошибке при составлении перечня работ и определении их взаимосвязей.

Цикл на сетевом графике

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

На рисунке 11 приведен пример устранения цикла, когда работа G становится частью общего результата.

Устранение цикла на сетевом графике

Именование работ и нумерация событий

Каждая работа в сетевом графике должна определяться однозначно, только ей присущей парой событий, как и не должно быть на графике событий с одинаковыми номерами.

Для правильной нумерации событий поступают следующим образом: нумерация событий начинается с исходного события, которому дается номер 0. Из исходного события вычеркивают все исходящие из него работы, на оставшейся сети вновь находят событие, в которое не входит ни одна работа. Этому событию дается номер 1. Затем вычеркивают работы, выходящие из события 1, и вновь находят на оставшейся части сети событие, в которое не входит ни одна работа, ему присваивается номер 2, и так продолжается до завершающего события.

Источник: forpm.ru

Приведите примеры исходных данных для которых результаты выполнения обеих программ будут одинаковыми

Приведите примеры исходных данных и требуемого результата в условии математической задачи (по вашему учебнику математики )К какому типу информационных задач относятся эти математические задачи

Комментарии

Ответ проверен экспертом
4 (159 оценок)

Pashq4

Pashq4 8 лет назад
Светило науки — 176 ответов — 2249 раз оказано помощи

Например
Некоторое тело двигалось со скоростью (V) 15 м/c и прошло путь (S) равный 150 м. Найти время (t), за которое пройден путь.
Здесь исходные данные: V = 15, S = 150. Результат: t = 10
Относится к первому типу информационных задач

Или так
Дана сторона прямоугольного треугольника А = 25 и гипотенуза B = 64. Найти Сторону C
Исходные данные: А = 9, B = 16. Результат: C = 4
Тоже первый тип информационных задач

Источник: vashurok.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru