Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share code      Blog   Popular   FAQ

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

Copy Format Clear
-- Проверка существования и удаление базы данных StaffDB, если она существует IF DB_ID('StaffDB') IS NOT NULL BEGIN DROP DATABASE StaffDB; END GO -- Создание базы данных CREATE DATABASE StaffDB; GO -- Переключение на созданную базу данных USE StaffDB; GO -- Проверка существования и удаление таблицы StaffRecords, если она существует IF OBJECT_ID('dbo.StaffRecords', 'U') IS NOT NULL BEGIN DROP TABLE dbo.StaffRecords; END GO -- Создание таблицы StaffRecords с полями StaffID, StaffName и StaffSalary CREATE TABLE StaffRecords ( StaffID int PRIMARY KEY, StaffName varchar(50), StaffSalary decimal(10,2) ); GO -- Вставка тестовых данных в таблицу StaffRecords INSERT INTO StaffRecords VALUES (1, 'Alice', 5000.00); INSERT INTO StaffRecords VALUES (2, 'Bob', 6000.00); INSERT INTO StaffRecords VALUES (3, 'Charlie', 7000.00); INSERT INTO StaffRecords VALUES (4, 'David', 8000.00); INSERT INTO StaffRecords VALUES (5, 'Eve', 9000.00); GO -- Проверка существования и удаление таблицы SummaryTable, если она существует IF OBJECT_ID('dbo.SummaryTable', 'U') IS NOT NULL BEGIN DROP TABLE dbo.SummaryTable; END GO -- Создание итоговой таблицы SummaryTable CREATE TABLE SummaryTable ( StaffID int, StaffName varchar(50), StaffSalary decimal(10,2) ); GO -- Проверка существования и удаление процедуры SelectTopStaff, если она существует IF OBJECT_ID('dbo.SelectTopStaff', 'P') IS NOT NULL BEGIN DROP PROCEDURE dbo.SelectTopStaff; END GO -- Создание процедуры для выбора трех сотрудников с максимальной зарплатой CREATE PROCEDURE SelectTopStaff AS BEGIN -- Очистка итоговой таблицы перед вставкой новых данных DELETE FROM SummaryTable; -- Вставка трех сотрудников с наивысшей зарплатой INSERT INTO SummaryTable (StaffID, StaffName, StaffSalary) SELECT TOP 3 StaffID, StaffName, StaffSalary FROM StaffRecords ORDER BY StaffSalary DESC; END; GO -- Выполнение процедуры для заполнения итоговой таблицы EXEC SelectTopStaff; GO -- Генерация XML-документа из итоговой таблицы DECLARE @StaffXML xml; SET @StaffXML = (SELECT * FROM SummaryTable FOR XML PATH('Employee'), ROOT('Employees')); GO -- Проверка, является ли первый сотрудник "Федей" с помощью метода exist IF (SELECT @StaffXML.exist('/Employees/Employee[1][StaffName="Fedya"]')) = 1 BEGIN PRINT 'Первый сотрудник - Федя'; END ELSE BEGIN PRINT 'Первый сотрудник - не Федя'; END; GO -- Добавление четвертого сотрудника в итоговую таблицу INSERT INTO SummaryTable (StaffID, StaffName, StaffSalary) VALUES (999, 'Fedya', 1000.00); GO -- Проверка существования и удаление триггера CalcAvgSalaryTrigger, если он существует IF OBJECT_ID('dbo.CalcAvgSalaryTrigger', 'TR') IS NOT NULL BEGIN DROP TRIGGER dbo.CalcAvgSalaryTrigger; END GO -- Создание триггера для вычисления средней зарплаты после вставки или обновления CREATE TRIGGER CalcAvgSalaryTrigger ON SummaryTable AFTER INSERT, UPDATE AS BEGIN DECLARE @AvgStaffSalary decimal(10,2); SELECT @AvgStaffSalary = AVG(StaffSalary) FROM SummaryTable; PRINT 'Средняя зарплата составляет ' + CAST(@AvgStaffSalary AS varchar(20)); END; GO

Stuck with a problem? Got Error? Ask ChatGPT!