Встроенные функции. Практическая работа 10
Скачать 25.04 Kb.
|
Практическая работа №10 Функции - это операции, позволяющие манипулировать данными. В среде SQLServer можно выделить несколько групп встроенных функций: Строковые функции. Используются для управления текстовыми строками, например, для обрезания или заполнения значений. Числовые функции. Используются для выполнения математических операций над числовыми данными. К числовым функциям относятся функции возвращающие абсолютные значения, синусы и косинусы углов, квадратный корень числа и т.д. Используются они только для алгебраических, тригонометрических и геометрических вычислений. В общем, используются редко, поэтому рассматривать их мы не будем. Итоговые функции. Используются для получения итоговых данных по таблицам, например, когда надо просуммировать какие-либо данные без их выборки. Функции даты и времени. Используются для управления значениями даты и времени, например, для возвращения разницы между датами. Системные функции. Возвращают служебную информацию СУБД. Пример 1. Получить список товаров с указанием аббревиатуры производителя. SELECT UPPER(LEFT(Manufacturer,2)) AS Abbreviation, CONCAT(ProductName, ' - ', Manufacturer) AS FullProdName FROM Products ORDER BY Abbreviation Пример 2. Получить список фирм с указанием фамилии и инициалов клиентов. SELECT Company, Name+""+ Left(Name,1)+"."+Left(SName,1)+"."AS FullName FROM Clients В запросе использована встроенная функция Left, позволяющая вырезать в текстовой переменной один символ слева в данном случае. Пример_3.'>Пример 3. Использование функции ROUND SELECT ROUND(1342.345, 2) -- 1342.350 SELECT ROUND(1342.345, -2) -- 1300.000 Пример 4. Изменить даты поставок SELECT DATEADD(month, 2, '2020-7-28') -- 2020-09-28 00:00:00.000 SELECT DATEADD(day, 5, '2020-7-28') -- 2020-08-02 00:00:00.000 SELECT DATEADD(day, -5, '2020-7-28') -- 2020-07-23 00:00:00.000 Пример 5. Получить список товаров с указанием года и месяца продажи. SELECT Products.Name, Year(Supplies.Date) AS Year, Month(Supplies.Date) AS Month FROM Products INNER JOIN Supplies ON Products.ID=Supplies.ID В запросе использованы встроенные функции Year и Month для выделения года и месяца из даты. Пример 6. Определение разницы во времени SELECT DATEDIFF(year, '2019-7-28', '2020-9-28') -- разница 1 год SELECT DATEDIFF(month, '2019-7-28', '2020-9-28') -- 14 месяцев SELECT DATEDIFF(day, '2019-7-28', '2020-9-28') -- разница 427 дней Пример 7. Определить количество дней в месяце SELECT EOMONTH('2020-02-05') -- 2020-02-28 SELECT EOMONTH('2020-02-05', 3) -- 2020-05-31(через 3 месяца) Пример 8. Найти поставки, которые были сделаны 16 дней назад SELECT * FROM Orders WHERE DATEDIFF(day, CreatedAt, GETDATE()) = 16 Пример 9. Вывести сумму и дату поставки в одной строке SELECT Id, CAST(CreatedAt AS nvarchar) + '; total: ' + CAST(Price * ProductCount AS nvarchar) FROM Orders Пример 10. Вывести дату и стоимость заказов с форматированием SELECT CONVERT(nvarchar, CreatedAt, 3), CONVERT(nvarchar, Price * ProductCount, 1) FROM Orders Пример 11. Установить категорию товаров SELECT ProductName, Manufacturer, CASE WHEN Price > 50000 THEN 'Категория A' WHEN Price BETWEEN 40000 AND 50000 THEN 'Категория B' WHEN Price BETWEEN 30000 AND 40000 THEN 'Категория C' ELSE 'Категория D' END AS Category FROM Products Пример 12. Установить категории по количеству товара SELECT ProductName, Manufacturer, IIF(ProductCount>3, 'Много товара', 'Мало товара') FROM Products Создание запросов к базе данных Поставщиков деталей В базе даннах SPJ создать таблицу C (contacts) CREATE TABLE C( C# CHAR(5) PRIMARY KEY NOT NULL, PHONE CHAR NOT NULL, EMAIL CHAR NOT NULL ) Заполнить таблицу данными (Пример: PHONE: (495)876-55-99; EMAIL: jones@gmail.com) В таблице SPJ добавить поле, которое будет ссылаться на соответствующее поле в таблице C Установить связи. В таблицу SPJ добавить поле PRICE (цена за шт., тип – Money), заполнить значениями. Оформить отчет в виде таблицы по предлагаемому образцу
|