Advertisement
yuliia_tech

Oracle_homework3

Apr 15th, 2023
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Assignment 1
  2. SELECT
  3.     DECODE(GROUPING(CITY.COUNTRY), 1, 'Summary-total:', CITY.COUNTRY) AS VISITED_COUNTRY,
  4.     DECODE(GROUPING(CITY.COUNTRY), 0,
  5.            DECODE(GROUPING(CITY.NAME), 1, 'Summary-country:', CITY.NAME),
  6.            NULL) AS CITY,
  7.     DECODE(GROUPING(CITY.COUNTRY), 0,
  8.            DECODE(GROUPING(CITY.NAME), 0,
  9.                   DECODE(GROUPING(ACCOMMODATIONTYPE.NAME), 1, 'Summary-city:', ACCOMMODATIONTYPE.NAME),
  10.                   NULL),
  11.            NULL) AS TYPE,
  12.     SUM(VISIT.NUMBER_OF_VISITORS) AS VISITORS,
  13.     SUM(VISIT.PROFIT) AS PROFIT
  14. FROM
  15.     VISIT
  16.     JOIN CITY ON VISIT.ID_CITY = CITY.ID_CITY
  17.     JOIN ACCOMMODATIONTYPE ON VISIT.ID_TYPE = ACCOMMODATIONTYPE.ID_TYPE
  18. GROUP BY
  19.     ROLLUP(CITY.COUNTRY, CITY.NAME, ACCOMMODATIONTYPE.NAME)
  20. ORDER BY
  21.     VISITED_COUNTRY, CITY, TYPE;
  22.  
  23.  
  24. --Assignment 2
  25. SELECT CITY.COUNTRY VISITED_COUNTRY,
  26.        TIME.YEAR YEAR,
  27.        TIME.MONTH MONTH,
  28.        SUM(VISIT.NUMBER_OF_VISITORS) VISITORS,
  29.        ROUND(AVG(SUM(VISIT.NUMBER_OF_VISITORS))
  30.             OVER (PARTITION BY CITY.COUNTRY
  31.                   ORDER BY TIME.YEAR, TIME.MONTH
  32.                   ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING),2) TREND
  33. FROM VISIT
  34.        JOIN CITY ON VISIT.ID_CITY = CITY.ID_CITY
  35.        JOIN TIME ON VISIT.ID_TIME = TIME.ID_TIME
  36. WHERE  CONTINENT='South America'
  37. GROUP BY CITY.COUNTRY, TIME.YEAR, TIME.MONTH
  38. ORDER BY VISITED_COUNTRY, YEAR, MONTH;
  39.  
  40.  
  41.  
  42. --Assignment 3
  43. SELECT NVL(AGE.NAME, 'SUMMARY') AGE,
  44.        TIME.YEAR YEAR,
  45.        TIME.MONTH MONTH,
  46.        LPAD('$'||SUM(VISIT.PROFIT), 10) PROFIT,
  47.        LPAD('$'||SUM(SUM(VISIT.PROFIT))
  48.        OVER (PARTITION BY AGE.NAME
  49.              ORDER BY TIME.YEAR, TIME.MONTH), 10) CUMULATIVE,
  50.        ROUND(RATIO_TO_REPORT(SUM(VISIT.PROFIT)) OVER (PARTITION BY AGE.NAME), 3)*100 PERCENT
  51. FROM VISIT
  52.      JOIN AGE ON VISIT.ID_AGE = AGE.ID_AGE
  53.      JOIN TIME ON VISIT.ID_TIME = TIME.ID_TIME
  54. GROUP BY GROUPING SETS ((AGE.NAME, TIME.YEAR, TIME.MONTH), ())
  55. ORDER BY AGE.NAME, YEAR, MONTH;
  56.  
  57. --Assignment 4
  58. --Ranking for row 4 and 5?
  59. SELECT
  60.     CITY.COUNTRY COUNTRY,
  61.     CITY.NAME CITY,
  62.     RANK() OVER (PARTITION BY CITY.COUNTRY ORDER BY NVL(SUM(VISIT.NUMBER_OF_VISITORS), 0) DESC) RANKING_R1,
  63.     RANK() OVER (PARTITION BY CITY.COUNTRY ORDER BY NVL(SUM(VISIT.PROFIT), 0) DESC) RANKING_R2
  64. FROM CITY
  65.     LEFT OUTER JOIN VISIT ON VISIT.ID_CITY = CITY.ID_CITY
  66. WHERE CITY.CONTINENT = 'South America'
  67. GROUP BY CITY.COUNTRY, CITY.NAME
  68. ORDER BY CITY.COUNTRY, RANKING_R1;
  69.    
  70.    
  71. SELECT
  72.     CITY.COUNTRY COUNTRY,
  73.     CITY.NAME CITY,
  74.     NVL(SUM(VISIT.NUMBER_OF_VISITORS), 0) VISITORS,
  75.     NVL(SUM(VISIT.PROFIT), 0) PROFIT
  76. FROM CITY
  77.     LEFT OUTER JOIN VISIT ON VISIT.ID_CITY = CITY.ID_CITY
  78. WHERE CITY.CONTINENT = 'South America'
  79. GROUP BY CITY.COUNTRY, CITY.NAME
  80. ORDER BY CITY.COUNTRY, VISITORS DESC;
  81.  
  82.  
  83. --Assignment 5
  84. SELECT *
  85. FROM (
  86.     SELECT NVL(CITY.COUNTRY, '--TOTAL--') COUNTRY,
  87.            NVL(AGE.NAME, 'TOTAL') AGE,
  88.            SUM(VISIT.NUMBER_OF_VISITS) VISITS
  89.     FROM VISIT
  90.          JOIN AGE ON VISIT.ID_AGE = AGE.ID_AGE
  91.          JOIN TIME ON VISIT.ID_TIME = TIME.ID_TIME
  92.          JOIN CITY ON VISIT.ID_CITY = CITY.ID_CITY
  93.     WHERE CITY.CONTINENT = 'Europe'
  94.     GROUP BY CUBE(CITY.COUNTRY, AGE.NAME)
  95. )
  96. PIVOT (SUM(VISITS) FOR AGE IN ('child','teenager','young adult', 'adult',
  97.                                   'middle age', 'senior', 'TOTAL'))
  98. ORDER BY COUNTRY DESC NULLS LAST;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement