Advertisement
S_Madanska

16.02.22

Feb 16th, 2022
1,037
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 9.51 KB | None
  1. -----------------------------------------------------------------------------------------
  2. --------------------------------Homework-------------------------------------------------
  3. -----------------------------------------------------------------------------------------
  4.   /* Задача 4-13.
  5.    Да се изведат име, фамилия и пол на клиентите, направили последните 5 поръчки.*/
  6.  
  7.    SELECT TOP 5 C.FNAME, C.LNAME, C.GENDER, O.ORDER_DATE
  8.    FROM CUSTOMERS C JOIN ORDERS O
  9.    ON C.CUSTOMER_ID = O.CUSTOMER_ID
  10.    ORDER BY ORDER_DATE DESC
  11.  
  12. -----------------------------------------------------------------------------------------
  13. --------------------------------VIEWS----------------------------------------------------
  14. -----------------------------------------------------------------------------------------
  15. -----------------------------Промяна на изгледи------------------------------------------
  16.  
  17.     CREATE VIEW MY_FIRST_VIEW
  18.     AS
  19.     SELECT   C.FNAME + ' ' + C.LNAME AS КЛИЕНТИ
  20.            , O.ORDER_ID
  21.            , O.ORDER_DATE
  22.     FROM CUSTOMERS C JOIN ORDERS O ON C.CUSTOMER_ID = O.CUSTOMER_ID
  23.  
  24.     SELECT * FROM MY_FIRST_VIEW
  25.  
  26.     --Пример 5-2.
  27.     --Да се модифицира горният изглед така, че да съдържа и колона с името на
  28.     --съответния служител, обработил поръчката.
  29.  
  30.     ALTER VIEW MY_FIRST_VIEW
  31.     AS
  32.     SELECT   C.FNAME + ' ' + C.LNAME AS КЛИЕНТИ
  33.            , E.FNAME + ' ' + E.LNAME AS СЛУЖИТЕЛИ
  34.            , O.ORDER_ID
  35.            , O.ORDER_DATE
  36.     FROM CUSTOMERS C JOIN ORDERS O ON C.CUSTOMER_ID = O.CUSTOMER_ID
  37.                      JOIN EMPLOYEES E ON E.EMPLOYEE_ID = O.EMPLOYEE_ID
  38.  
  39.     --Пример 5-3
  40.     -- Да се модифицира горния изглед така, че да съдържа само поръчките,
  41.     --обработени от служител с идентификатор = 167.
  42.  
  43.     ALTER VIEW MY_FIRST_VIEW
  44.     AS
  45.     SELECT   C.FNAME + ' ' + C.LNAME AS КЛИЕНТИ
  46.            , E.FNAME + ' ' + E.LNAME AS СЛУЖИТЕЛИ
  47.            , O.ORDER_ID
  48.            , O.ORDER_DATE
  49.     FROM CUSTOMERS C JOIN ORDERS O ON C.CUSTOMER_ID = O.CUSTOMER_ID
  50.                      JOIN EMPLOYEES E ON E.EMPLOYEE_ID = O.EMPLOYEE_ID
  51.     WHERE E.EMPLOYEE_ID = 167
  52.     ORDER BY O.ORDER_ID
  53.     OFFSET 0 ROWS
  54.  
  55.     SELECT * FROM MY_FIRST_VIEW
  56.     ORDER BY 1
  57.  
  58.     --ЗАД 0.6
  59.     --Да се създаде изглед,
  60.     ---съдържащ информация за служителите,
  61.     --които са и мениджъри и по колко починени имат.
  62.     ALTER  VIEW BOSS_OF_EMPLOYEES_COUNT
  63.     AS
  64.     SELECT E1.EMPLOYEE_ID, E1.FNAME, E1.LNAME, COUNT(E2.MANAGER_ID) ПОДЧИНЕНИ
  65.     FROM EMPLOYEES E1 JOIN EMPLOYEES E2
  66.     ON E1.EMPLOYEE_ID = E2.MANAGER_ID
  67.     GROUP BY E1.EMPLOYEE_ID, E1.FNAME, E1.LNAME
  68.     ORDER BY 4 DESC
  69.     OFFSET 0 ROWS
  70.        
  71.     --ЗАД 0.7
  72.     --Да се създаде изглед, съдържащ информация за отделите, в които не работят
  73.     --никакви служители.
  74.     CREATE VIEW DEPT_WITHOUT_EMPLOYEES
  75.     AS
  76.     SELECT D.*
  77.     FROM DEPARTMENTS D LEFT JOIN EMPLOYEES E
  78.     ON D.DEPARTMENT_ID = E.DEPARTMENT_ID
  79.     WHERE  E.DEPARTMENT_ID IS NULL
  80.  
  81.  
  82.     --Пример 5-4.
  83.     --Да се създаде изглед, съдържащ име и фамилия на служител и общата сума на
  84.     --поръчките, които той е обработил.
  85.     CREATE VIEW EMP_TOTAL
  86.     AS
  87.     SELECT E.FNAME, E.LNAME, SUM(UNIT_PRICE * QUANTITY) TOTAL
  88.     FROM EMPLOYEES E JOIN ORDERS O  ON E.EMPLOYEE_ID = O.EMPLOYEE_ID
  89.                     JOIN ORDER_ITEMS OI ON OI.ORDER_ID=O.ORDER_ID
  90.     GROUP BY E.FNAME, E.LNAME, E.EMPLOYEE_ID
  91.  
  92.     --Пример 5-5.
  93.     --Да се създаде изглед, който съдържа имена, отдел и заплата на 5-мата
  94.     --служители с най-висока заплата.
  95.     SELECT TOP 5 FNAME, LNAME, DEPARTMENT_ID, SALARY
  96.     FROM EMPLOYEES
  97.     ORDER BY SALARY DESC
  98.  
  99.  -----------------------------------------------------------------------------------------
  100. ----------------------------------ПРЕПИТКА 3---------------------------------------------
  101. -----------------------------------------------------------------------------------------
  102.     --ЗАДАЧА 3.1
  103.     --Създай изглед с име, фамилия, телефон и име на длъжност на служителите,
  104.     --които работят в отдел 100.
  105.  
  106.     CREATE VIEW  EXAMPLEVIEW
  107.     AS
  108.     SELECT  e.FNAME, e.LNAME, e.PHONE, j.JOB_TITLE
  109.     FROM EMPLOYEES e join JOBS j
  110.     on e.JOB_ID = j.JOB_ID
  111.     WHERE e.DEPARTMENT_ID = 100
  112.  
  113.     SELECT * FROM EXAMPLEVIEW
  114.     ------------------------------------------------------------------------------------------
  115.  
  116.     --ЗАДАЧА 3.2
  117.     --Модифицирай горния изглед като конкатенираш в една колона име и фамилия на служител,
  118.     --и добавиш колони заплата на служителя и неговия пряк ръководител (мениджър).
  119.     ALTER VIEW EXAMPLEVIEW
  120.     AS
  121.     SELECT  e.FNAME + ' ' + e.LNAME AS NAME,
  122.             e.PHONE,
  123.             j.JOB_TITLE,
  124.             e.SALARY,
  125.             e.MANAGER_ID
  126.     FROM EMPLOYEES e join JOBS j
  127.     on e.JOB_ID = j.JOB_ID
  128.     WHERE e.DEPARTMENT_ID = 100
  129.  
  130.  
  131.     SELECT * FROM EXAMPLEVIEW
  132.  
  133.     -------------------------------------------------------------------------------------------
  134.     --ЗАДАЧА 3.3
  135.     --Създай изглед върху изгледа от ЗАДАЧА 3.2 като в резултатния набор включиш само колоните:
  136.     -- имена и идентификатор на мениджър.
  137.  
  138.     CREATE VIEW VIEWFROMVIEW
  139.      AS
  140.     SELECT NAME,
  141.            MANAGER_ID
  142.       FROM EXAMPLEVIEW
  143.  
  144.     SELECT * FROM VIEWFROMVIEW
  145.  
  146.     -------------------------------------------------------------------------------------------
  147.  
  148.     --ЗАДАЧА 3.4
  149.     --Създай изглед с имената на регионите и броя на държавите в тях.
  150.     CREATE VIEW COUNT_OF_COUNTRIES
  151.     AS
  152.     SELECT R.NAME, R.REGION_ID, COUNT(C.COUNTRY_ID) [броя на държавите]
  153.     FROM REGIONS R JOIN COUNTRIES C
  154.     ON R.REGION_ID = C.REGION_ID
  155.     GROUP BY R.NAME, R.REGION_ID
  156.     ORDER BY REGION_ID
  157.     OFFSET 0 ROWS
  158.  
  159.     --------------------------------------------------------------------------
  160.     ------------------5.4.Манипулиране на данни чрез изглед ------------------
  161.     --------------------------------------------------------------------------
  162.     --Пример 5-6.1
  163.     --Създай изглед базиран на JOIN между таблиците COUNTRIES и CUSTOMERS
  164.     CREATE VIEW COUNTRIES_CUSTOMERS
  165.     AS
  166.     SELECT CO.COUNTRY_ID AS COUNTRY_COUNTRY_ID , CO.NAME, CO.REGION_ID,
  167.            CU.CUSTOMER_ID, CU.FNAME, CU.LNAME, CU.GENDER,
  168.            CU.COUNTRY_ID AS CUSTOMERS_COUNTRY_ID, CU.EMAIL
  169.     FROM CUSTOMERS CU JOIN COUNTRIES CO
  170.     ON CU.COUNTRY_ID = CO.COUNTRY_ID
  171.  
  172.     SELECT * FROM COUNTRIES_CUSTOMERS
  173.  
  174.     -----------------5.4.1. Добавяне на данни чрез изглед---------------------
  175.  
  176.     --Пример 5-6.2
  177.     --Да се добави нов запис в таблицата CUSTOMERS през изгледа от Пр. 5-6.1.
  178.      INSERT INTO COUNTRIES_CUSTOMERS (CUSTOMER_ID, FNAME, LNAME, GENDER, CUSTOMERS_COUNTRY_ID, EMAIL)
  179.      VALUES (10, 'Мира', 'Тодорова', 'F', 'BG', 'miramira@gmail.com')
  180.  
  181.      SELECT * FROM CUSTOMERS
  182.      WHERE CUSTOMER_ID = 10
  183.  
  184.     -------------------5.4.2. Променяне на данни през изглед------------------
  185.    
  186.     ---Пример 5-7.
  187.     -- Да се промени фамилията на клиент с идентификатор 10.
  188.  
  189.      UPDATE COUNTRIES_CUSTOMERS
  190.      SET LNAME = 'Лукова'
  191.      WHERE CUSTOMER_ID = 10
  192.  
  193.     -----------------5.4.3. Изтриване на данни през изглед -------------------    
  194.     --Пример 5-8.
  195.     --Да се изтрие клиент с идентификатор 10.
  196.      DELETE FROM COUNTRIES_CUSTOMERS
  197.      WHERE CUSTOMER_ID = 10
  198.  
  199.  
  200.     ----------------5.5.Задачи------------------------------------------------
  201.     --Задача 5-1.
  202.     --Да се създаде изглед, който съдържа имената на продуктите и общо поръчано
  203.     --количество от продукт.
  204.     CREATE VIEW PROD_SUM_QUNT
  205.     AS
  206.     SELECT P.NAME, SUM(QUANTITY)  общо_Поръчано_количество
  207.     FROM PRODUCTS P JOIN ORDER_ITEMS OI
  208.     ON P.PRODUCT_ID = OI.PRODUCT_ID
  209.     GROUP BY P.NAME, P.PRODUCT_ID
  210.     ORDER BY 2 DESC
  211.     OFFSET 0 ROWS
  212.  
  213.     SELECT * FROM PROD_SUM_QUNT
  214.  
  215. -------------------------------------------------------------------------------------
  216. -------------------------------   HOMEWORK   ----------------------------------------
  217. -------------------------------------------------------------------------------------
  218.     --Задача 5-2.
  219.     --Да се създаде изглед, който съдържа десетимата клиенти с най-голям брой
  220.     --поръчки. Ако последният клиент има равен брой поръчки с други клиенти,
  221.     --те също да участват в изгледа.
  222.  
  223.  
  224.     --Задача 0.4*
  225.     --Да се създаде изглед с имената на държавите с повече от 5 клиента от тях.
Advertisement
RAW Paste Data Copied
Advertisement