Advertisement
skioe

ДЗ УД Семинар 2

Sep 24th, 2023 (edited)
1,238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.05 KB | None | 0 0
  1. -- Задание 1
  2.  
  3. DECLARE @Зарплата DECIMAL(10, 2)
  4. DECLARE @ОбщаяСуммаПремии DECIMAL(10, 2)
  5. DECLARE @Пол NVARCHAR(10)
  6. DECLARE @ГодРождения INT
  7.  
  8. DECLARE cursorEmployee CURSOR FOR
  9. SELECT Зарплата, Пол, Год_рождения
  10. FROM Сотрудник
  11.  
  12. SET @ОбщаяСуммаПремии = 0
  13.  
  14. OPEN cursorEmployee
  15. FETCH NEXT FROM cursorEmployee INTO @Зарплата, @Пол, @ГодРождения
  16. WHILE @@FETCH_STATUS = 0
  17. BEGIN
  18.     IF (@Пол = N'женский' AND DATEDIFF(YEAR, @ГодРождения, GETDATE()) > 60)
  19.         OR (@Пол = N'мужской' AND DATEDIFF(YEAR, @ГодРождения, GETDATE()) > 65)
  20.     BEGIN
  21.         SET @ОбщаяСуммаПремии = @ОбщаяСуммаПремии + (@Зарплата * 0.25)
  22.     END
  23.  
  24.     FETCH NEXT FROM cursorEmployee INTO @Зарплата, @Пол, @ГодРождения
  25. END
  26.  
  27. CLOSE cursorEmployee
  28. DEALLOCATE cursorEmployee
  29.  
  30. SELECT @ОбщаяСуммаПремии AS Общая_сумма_премии
  31.  
  32.  
  33. -- Задание 2
  34.  
  35.  
  36. CREATE TABLE ИтоговаяТаблица (ФИО NVARCHAR(255), КоличествоНесданных INT);
  37.  
  38. DECLARE @ФИО NVARCHAR(255);
  39. DECLARE @КоличествоНесданных INT = 0;
  40.  
  41. DECLARE cursor_Студент CURSOR FOR
  42. SELECT DISTINCT ФИО
  43. FROM Экзамен;
  44.  
  45. OPEN cursor_Студент;
  46. FETCH NEXT FROM cursor_Студент INTO @ФИО;
  47. WHILE @@FETCH_STATUS = 0
  48. BEGIN
  49.     SET @КоличествоНесданных = 4 - (
  50.         SELECT COUNT(DISTINCT Предмет)
  51.         FROM Экзамен
  52.         WHERE ФИО = @ФИО
  53.     );
  54.  
  55.     IF @КоличествоНесданных > 0
  56.     BEGIN
  57.         INSERT INTO ИтоговаяТаблица (ФИО, КоличествоНесданных)
  58.         VALUES (@ФИО, @КоличествоНесданных);
  59.     END
  60.  
  61.     FETCH NEXT FROM cursor_Студент INTO @ФИО;
  62. END
  63.  
  64. CLOSE cursor_Студент;
  65. DEALLOCATE cursor_Студент;
  66.  
  67. SELECT * FROM ИтоговаяТаблица
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement