Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. --1
  2. SELECT departments.department_name FROM departments, employees, jobs WHERE
  3. departments.department_id = employees.employee_id and jobs.job_id = employees.job_id and
  4. jobs.max_salary > 25000
  5. --2
  6. SELECT SUM(e1.salary), c1.country_id FROM employees e1, countries c1, departments d1, locations l1
  7. WHERE e1.department_id = d1.department_id
  8. and d1.location_id = l1.location_id
  9. and l1.country_id = c1.country_id
  10. GROUP BY c1.country_id
  11. --3
  12. DECLARE @I INT
  13. DECLARE @A INT
  14. DECLARE @B INT
  15. DECLARE @C INT
  16. SET @A = 0
  17. SET @B = 0
  18. SET @C = 0
  19. DECLARE @minpensja INT
  20. DECLARE @pensja INT
  21. DECLARE @maxpensja INT
  22. declare kur SCROLL cursor for
  23. select e.salary, j.min_salary, j.max_salary from employees e, jobs j
  24. where e.job_id = j.job_id;
  25. OPEN kur;
  26. FETCH NEXT FROM kur INTO @pensja, @minpensja, @maxpensja;
  27. WHILE @@FETCH_STATUS=0
  28. BEGIN
  29. IF(@pensja >= @minpensja and @pensja < @pensja*0.3 + @minpensja)
  30. BEGIN
  31. SET @A = @A+1;
  32. END
  33. IF(@pensja >= @minpensja + 0.3*@pensja and @pensja < @pensja*0.7 + @minpensja)
  34. BEGIN
  35. SET @B = @B+1;
  36. END
  37. IF(@pensja >= @minpensja + 0.7*@pensja and @pensja <= @maxpensja)
  38. BEGIN
  39. SET @C = @C+1;
  40. END
  41. FETCH NEXT FROM kur INTO @pensja, @minpensja, @maxpensja;
  42. END
  43. CLOSE kur
  44. DEALLOCATE kur
  45. print 'a)'+CONVERT(VARCHAR(3),@A)
  46. print 'b)'+CONVERT(VARCHAR(3),@B)
  47. print 'c)'+CONVERT(VARCHAR(3),@C)
  48. --4
  49. USE HR
  50. GO
  51. drop procedure robinHood
  52. GO
  53. create proc robinHood(@idDzialu INT, @proc INT)
  54. AS
  55. BEGIN
  56. DECLARE @ilu INT
  57. SET @ilu = 0;
  58. SET @ilu += (SELECT COUNT(*) FROM employees e2 WHERE e2.department_id = @idDzialu AND e2.salary = (
  59. SELECT MIN(salary) FROM employees e3 WHERE e3.job_id = e2.job_id AND e2.salary <>
  60. (SELECT MAX(salary) FROM employees e3 WHERE e3.job_id = e2.job_id)) --zapytanie takie jak ponizej tylko zliczajace
  61. )
  62.  
  63. UPDATE employees SET
  64. salary=salary*@proc/100
  65. --jezeli uznamy ze jak mamy jedna osobe na danym stanowisku to jest ona osoba zarabiajaca najnizsza stawke
  66. --WHERE employee_id IN
  67. --(SELECT e2.employee_id FROM employees e2 WHERE e2.department_id = @idDzialu AND e2.salary = (
  68. -- SELECT MIN(salary) FROM employees e3 WHERE e3.job_id = e2.job_id)
  69. --)
  70.  
  71. -- ponizej rozumowanie przeciwne, czyli przyjmujemy ze jak na danym stanowisku jest jedna osoba to nie dostaje podwyzki
  72. WHERE employee_id IN (
  73. SELECT e2.employee_id FROM employees e2 WHERE e2.department_id = @idDzialu AND e2.salary = (
  74. SELECT MIN(salary) FROM employees e3 WHERE e3.job_id = e2.job_id) AND e2.salary <>
  75. (SELECT MAX(salary) FROM employees e3 WHERE e3.job_id = e2.job_id))
  76.  
  77.  
  78. if(@ilu IS NOT NULL)
  79. print 'Podwyzszono zarobki '+CONVERT(varchar(3),@ilu)+' pracownikom.';
  80. else
  81. print 'Nie ma takich pracownikow';
  82. END
  83.  
  84. GO
  85. GO
  86. EXEC robinHood 10, 50
  87. --5
  88. DROP TRIGGER ZmianaManagera
  89. GO
  90. CREATE TRIGGER ZmianaManagera
  91. ON employees
  92. AFTER UPDATE
  93. AS
  94. BEGIN
  95. IF UPDATE(manager_id)
  96. BEGIN
  97. DECLARE @exMgr INT
  98. SET @exMgr = (SELECT TOP 1 d.manager_id from deleted d)
  99. DECLARE @Mgr INT
  100. set @Mgr = (SELECT TOP 1 i.manager_id from inserted i)
  101. IF(@exMgr IS NOT NULL)
  102. UPDATE employees SET salary = 0.9 * e.salary FROM employees e WHERE e.employee_id = @exMgr
  103. UPDATE employees SET salary = 1.1 * e.salary FROM employees e WHERE e.manager_id = @Mgr
  104. END
  105. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement