Advertisement
S_Madanska

16.02.22

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