Программирование на SQL | Тестовые задачи

В этом разделе сайта попытаемся разобраться с программированием баз данных. Язык называется SQL. В этом языке нет или почти нет классов, переменных, массивов и циклов. Сравнивать его с языками высокого уровня не имеет смысла. Но без него Вы не сможете написать интерфейс для настольных приложений Windows или интернет сайтов. Для Разработчика надо обязательно надо знать SQL, библиотеки обработки данных на C#, Microsoft Visual Studio, Microsoft SQL Server Management Studio или dbForge Studio for SQL Server

Задание 6. Дополнительное решение заданий 1-5

На этом этапе проверяется ваша способность мыслить не стандартно. А суть вот в чем.

Прошу предоставить после решения основных заданий решение с возможностью масштабирования по количеству металлов. Необходимо внести изменения во все необходимые объекты из заданий таким образом, чтобы система легко вместо четырех металлов (NiCuPtPd), еще держала пару сотен металлов сверху. Тестирования этого предоставлять не нужно, для себя только убедитесь, что решение рабочее. Хочется увидеть именно мысль решения. Но скрипты для необходимых изменений предоставьте.

Ещё...

Задание 5. Создать хранимую процедуру

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

Входные параметры :

  • период бурения  (даты от-до),
  • код месторождения

Выход :

Кол-во проб по элементам в каждом классе содержания за выбранный период бурения  по месторождению (пустые классы не выводить, использовать связь со справочником классов). Выходной результат должен быть пронумерован, классы отсортированы по возрастанию. Результат  процедуры выводится только на экран  в SQL Server Management Studio, сохранять в какую-либо таблицу  НЕ НАДО! Без использования временных таблиц!

Пример выходных данных.

Номер по порядку   Класс        Кол-во проб Ni   Кол-во проб Cu   Кол-во проб Pt   Кол-во проб Pd  
1                   0.00005-0.001         3                               4                                8                   0
2                   0.005-0.01               3                               0                                8                   0
3                   0.5-1                        0                               0                                8                   0
4                   1-10                         0                               0                                1                   1

 (предоставить скрипт создания процедуры, пример использования : входные данные , результат)

Ещё...

Задание 3. Создать таблицу классов содержаний химических элементов

Это третье задание из 6 предложенных ранее для тестирования знаний по Miccosoft SQL Server. Кажется, что оно самое простое. Но от его решения будет зависеть в дальнейшем решение SP процедуры

Таблица должна содержать следующие классы содержаний (min – max, формат хранения данных выбираете самостоятельно ):

  • 0.00005-0.001
  • 0.001-0.005
  • 0.005 – 0.01
  • 0.01 -0.5
  • 0.5- 1
  • 1-10
  • 10-50
  • 50-100

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

Ещё...

Задание 2. Создать таблицу описания скважин

Если Вы разобрались с 1 заданием, то в этом задании тоже будет создавать таблица, но с некоторыми другим параметрами. В решение пропущено часть кода и доработать код вы должные его сами. Это сделано для того, чтобы вы научились программировать, а не просто читать sql код

Создаем таблицу Описания скважин. Список полей для данной таблицы

  • Код скважины (уникальное текстовое, до 20 символов)
  • Код месторождения (связать со справочником месторождений)
  • Дата начала бурения скважины ( не ранее 1950 и не позднее текущего года, по умолчанию: текущая дата)
  • Дата окончания бурения скважины ( не ранее 1950 и не позднее текущего года)
  • Глубина скважины фактическая (положительное число до двух знаков после запятой, не более 2000 метров)

Примечание. Формат поля Кода скважины: ББ-0000бббб (необязательные: 2 заглавных русских буквы и тире,  обязательные:  4 цифры,  далее любые строчные буквы и цифры). Например:  ОМ-0023бис, 0023, 0023бис, М-0023клин1

Алгоритм проверки кода реализовать в отдельной функции. В триггере при вводе и редактировании проверять формат скважины, если не подходит, то по возможности  корректировать. Например: 8 -> 0008,  80бис -> 0080бис, с-80->С-0080,СС80->СС-0080, С80->С-0080.

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

Ещё...

Задание 1. Создать таблицу справочник месторождений

Примеры, начинающиеся со слова Задание, пригодятся вам для проверки знаний на основе Microsoft SQL Server. Это нужно, например, для прохождения тестов на вакансию, связанную с программированием T-SQL Server. Срок выполнения таких задач не может быть более 1-2 дней. Иначе интерес к вам как специалисту будет потерян. 

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

  • Код месторождения (целый числовой)
  • Широта (десятичные градусы, -pi/2 >= широта <= pi/2)
  • Долгота (десятичные градусы, 0 >= долгота <= 2*pi)
  • Зона (целый числовой, вычисляемые поле, Зона = div(Долгота/6) + 1)
  • Наименование месторождения (уникальное текстовое, до 50 знаков)
  • Система координат (Талнахская, Норильская; необязательное поле, предусмотреть возможность добавление новых систем координат)
  • Дата ввода \ обновления
  • Компьютер пользователя, выполнившего операцию

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

Ещё...

Программирование на SQL

Не будем засорять этот раздел разными простыми задачами, нам нужны необычные идеи. Вот, например, такая задача. Она встречается в банках, где стек разработки на SQL достигает 90%. На разработку дается максимум 24 часа (т.е. есть время и другими делами позаниматься). Мне удалось ее решить вечером часа за 3, успев сделать и некоторые домашние дела.

Но это не все, задача не имеет типового решения, всегда есть еще и другие способы. Подумайте над этим. Даю описание.

Задача - написать запрос, выводящий средний остаток из таблицы на заданный период. Для проверки результата вывести средний остаток с 9 янв по 17 янв. Примечание. В банке, в части экономии ресурсов SQL сервера, остатки по счету хранятся не на каждый день, а дифференцировано, когда были проводки. С другой стороны клиенту банка надо знать, какая сумма у него на счете за ЛЮБОЙ день. Исходные данные даны в таблице tblFactAmount ниже.

create table tblFactAmount (fAmount float, dtValueChange date)
;
insert into tblFactAmount (fAmount, dtValueChange)
values
(3, '20210101'),
(5, '20210110'),
(1, '20210114'),
(10,'20210116'),
(2, '20210117')

Вот мое решение. Оформил его в виде SP процедуры. Прежде, чем читать решение, подумайте 5 минут. Это намного интереснее. Вдруг ваше решение окажется лучше ...

 

Ещё...