Advertisement
Guest User

DWH Script

a guest
Jan 16th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. DROP TABLE fakten;
  2. DROP TABLE dwh_locations;
  3. DROP TABLE dwh_departments;
  4. DROP TABLE dwh_hire_dates;
  5. DROP TABLE dwh_jobs;
  6. DROP SEQUENCE S_DWH_HIRE_DATES_ID;
  7. DROP SEQUENCE S_DWH_JOBS_ID;
  8.  
  9.  
  10. CREATE TABLE Fakten
  11. (
  12. avg_salary NUMBER ,
  13. anz_mitarbeiter NUMBER ,
  14. dwh_locations_location_id NUMBER NOT NULL,
  15. dwh_departments_department_id NUMBER NOT NULL,
  16. dwh_jobs_job_pk NUMBER NOT NULL,
  17. dwh_hire_dates_hd_id NUMBER NOT NULL
  18. ) ;
  19.  
  20. CREATE TABLE dwh_departments
  21. (
  22. department_id NUMBER NOT NULL ,
  23. department_name VARCHAR2(50)
  24. ) ;
  25. ALTER TABLE dwh_departments ADD CONSTRAINT dwh_departments_PK PRIMARY KEY ( department_id );
  26.  
  27. CREATE TABLE dwh_hire_dates(hd_id NUMBER NOT NULL,hd_year NUMBER);
  28. ALTER TABLE dwh_hire_dates ADD CONSTRAINT dwh_hire_dates_PK PRIMARY KEY ( hd_id ) ;
  29.  
  30. CREATE TABLE dwh_jobs
  31. (
  32. job_pk NUMBER NOT NULL ,
  33. job_id VARCHAR2 (10) ,
  34. job_title VARCHAR2 (50)
  35. ) ;
  36. ALTER TABLE dwh_jobs ADD CONSTRAINT dwh_jobs_PK PRIMARY KEY ( job_pk ) ;
  37.  
  38. CREATE TABLE dwh_locations
  39. (
  40. location_id NUMBER NOT NULL ,
  41. city VARCHAR2 (50) ,
  42. county_name VARCHAR2 (50) ,
  43. region_name VARCHAR2 (50)
  44. ) ;
  45. ALTER TABLE dwh_locations ADD CONSTRAINT dwh_locations_PK PRIMARY KEY ( location_id ) ;
  46.  
  47. ALTER TABLE Fakten ADD CONSTRAINT Fakten_dwh_departments_FK FOREIGN KEY ( dwh_departments_department_id ) REFERENCES dwh_departments ( department_id ) ;
  48.  
  49. ALTER TABLE Fakten ADD CONSTRAINT Fakten_dwh_hire_dates_FK FOREIGN KEY ( dwh_hire_dates_hd_id ) REFERENCES dwh_hire_dates ( hd_id ) ;
  50.  
  51. ALTER TABLE Fakten ADD CONSTRAINT Fakten_dwh_jobs_FK FOREIGN KEY ( dwh_jobs_job_pk ) REFERENCES dwh_jobs ( job_pk ) ;
  52.  
  53. ALTER TABLE Fakten ADD CONSTRAINT Fakten_dwh_locations_FK FOREIGN KEY ( dwh_locations_location_id ) REFERENCES dwh_locations ( location_id ) ;
  54.  
  55.  
  56.  
  57. --Hier geht es richtig los
  58.  
  59.  
  60. INSERT INTO dwh_departments (SELECT department_id,department_name FROM departments);
  61.  
  62. INSERT INTO dwh_locations (SELECT l.location_id,l.city,c.country_name,r.region_name FROM locations l JOIN countries c ON (l.country_id = c.country_id) JOIN regions r ON (c.region_id = r.region_id));
  63.  
  64. CREATE SEQUENCE S_DWH_HIRE_DATES_ID START WITH 1 INCREMENT BY 1 NOCYCLE;
  65.  
  66. INSERT INTO dwh_hire_dates (SELECT S_DWH_HIRE_DATES_ID.nextval,e.year FROM (SELECT DISTINCT TO_NUMBER(TO_CHAR(hire_date,'yyyy'),'0000') AS year FROM employees) e);
  67.  
  68. CREATE SEQUENCE S_DWH_JOBS_ID START WITH 1 INCREMENT BY 1 NOCYCLE;
  69.  
  70. INSERT INTO dwh_jobs (SELECT S_DWH_JOBS_ID.nextval, job_id, job_title FROM jobs);
  71.  
  72. INSERT INTO fakten (select AVG(e.salary), COUNT(e.employee_id), l.location_id, d.department_id, j.job_pk, h.hd_id
  73. from employees e JOIN departments el ON (e.department_id = el.department_id), dwh_hire_dates h, dwh_jobs j, dwh_locations l, dwh_departments d
  74. WHERE TO_NUMBER(TO_CHAR(e.hire_date,'yyyy'),'0000') = h.hd_year
  75. AND e.job_id = j.job_id
  76. AND el.location_id = l.location_id
  77. AND e.department_id = d.department_id
  78. GROUP BY (l.location_id, d.department_id, j.job_pk, h.hd_id));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement