Advertisement
alpe95

DaB 5

Nov 19th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.50 KB | None | 0 0
  1. --1
  2. CREATE OR REPLACE VIEW VIEW5 AS
  3. SELECT SO.TITLE AS PART_TITLE, SD.TITLE, INITCAP(TRIM(SURNAME))||' '
  4. ||SUBSTR(FIRSTNAME,0,1)||'. '||SUBSTR(SURNAME,0,1)||'. ' AS FAM,
  5. SS.SALARY, SS.ID, SS.HEAD, ST.STAGE
  6. FROM EMPLOYEES SS, POSITIONS SD, DEPARTMENTS SO,
  7. (SELECT EMPLOYEES.ID, ROUND(SYSDATE-COMEDATE) AS STAGE FROM EMPLOYEES ) ST
  8. WHERE SS.POSITION_ID = SD.ID AND ST.ID=SS.ID
  9. AND SS.DEPARTMENT_ID = SO.ID;
  10.  
  11. SELECT * FROM VIEW5;
  12.  
  13. --1A
  14. SELECT LTRIM(SYS_CONNECT_BY_PATH(FAM || DECODE(HEAD, NULL, '', (' - ' || LOWER(TITLE))), ' / '), ' / ') AS HIERACHY
  15. FROM VIEW5
  16. WHERE CONNECT_BY_ISLEAF = 1
  17. CONNECT BY PRIOR ID = HEAD START WITH HEAD IS NULL; --A
  18.  
  19. --1B
  20. SELECT FAM, TRUNC(STAGE/365) YEAR, TRUNC(MOD(STAGE,365)/(365/12)) MONTH FROM VIEW5;
  21.  
  22. --2
  23. GRANT SELECT ON T_SOTR TO DIT15_17_19;
  24.  
  25. CREATE OR REPLACE VIEW VIEW_FOR_2 AS
  26. SELECT * FROM (
  27. SELECT DEPARTMENT_ID, POSITION_ID
  28. FROM (
  29. SELECT EMPLOYESS.ID, EMPLOYEES.SURNAME, FIRSTNAME, DEPARTMENT_ID, POSITION_ID
  30. FROM EMPLOYEES
  31. UNION ALL
  32. SELECT KOD_SOTR, FAM, NAME, kod_otd, kod_dol
  33. FROM t_sotr))
  34. PIVOT (COUNT (*) FOR DEPARTMENT_ID IN (16, 22, 96))
  35. ORDER BY POSITION_ID; --2A
  36.  
  37. SELECT POSITIONS.TITLE
  38. FROM POSITIONS, VIEW_FOR_2
  39. WHERE VIEW_FOR_2."16" + VIEW_FOR_2."22" + VIEW_FOR_2."96" <> 0 AND POSITIONS.POSITION_ID=VIEW_FOR_2.POSITION_ID; --2B
  40.  
  41. --3
  42. SELECT decode(GROUPING(TITLE), 0, ' ', 'ИТОГО: ' || TRIM(PART_TITLE)) AS "Итоги по отделам",
  43.        decode(GROUPING(TITLE), 0, TRIM(TITLE), ' ') AS "Должность",
  44.        SUM(SALARY) AS "Оклады", COUNT(*) AS "Кол. человек"
  45. FROM VIEW5
  46. GROUP BY ROLLUP (PART_TITLE, TITLE); --3
  47.  
  48. --4
  49. SELECT DECODE(GROUPING(PART_TITLE),0,TRIM(PART_TITLE), 'ВСЕГО:') ОТДЕЛ,
  50. DECODE(GROUPING(TITLE),0, TRIM(TITLE), 'ОБЩЕЕ КОЛИЧЕСТВО: '||TRIM(PART_TITLE)) ДОЛЖНОСТЬ, COUNT(*) "КОЛ-ВО ЧЕЛ."
  51. FROM VIEW5
  52. GROUP BY CUBE(PART_TITLE, TITLE) ORDER BY PART_TITLE, TITLE;
  53.  
  54. --6
  55. CREATE SEQUENCE SQ1
  56. INCREMENT BY -2
  57. START WITH 120
  58. MAXVALUE 120
  59. MINVALUE 20
  60. CYCLE
  61. CACHE 5;
  62.  
  63. --7
  64. INSERT INTO POSITIONS
  65. VALUES (SQ1.NEXTVAL, 'ИНЖЕНЕР 3');
  66. INSERT INTO POSITIONS
  67. VALUES (SQ1.NEXTVAL, 'ПРОГРАММИСТ 3');
  68.  
  69. --8
  70. ALTER SEQUENCE SQ1 INCREMENT BY 1;
  71. ALTER SEQUENCE SQ1 NOCYCLE;
  72.  
  73. --9
  74. CREATE SEQUENCE Ssq
  75. INCREMENT BY 1
  76. START WITH 100
  77. MINVALUE 100
  78. NOMAXVALUE
  79. NOCYCLE;
  80.  
  81. --10
  82. INSERT INTO DEPARTMENTS
  83. VALUES (Ssq.NEXTVAL,'КРИПТОГРАФИЯ',NULL);
  84. INSERT INTO DEPARTMENTS
  85. VALUES (Ssq.NEXTVAL,'КРИПТОГРАФИЯ',NULL);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement