Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.76 KB | None | 0 0
  1. /*1. feladat*/
  2. /*1A: Készítsen olyan SQL lekérdezést a Northwind adatbázisban, mely termék-kategóriánként és évenként
  3. adja meg a 90 dollárnál drágább egységárú termékek rendelési tételeken szereplő darabszámai összegét!*/
  4.  
  5. SELECT top 5 * FROM Northwind.dbo.[ORDER Details]
  6. SELECT top 5 * FROM Northwind.dbo.Orders
  7. SELECT top 5 * FROM Northwind.dbo.Products
  8. SELECT top 5 * FROM Northwind.dbo.Categories
  9.  
  10. SELECT CategoryName, YEAR(OrderDate), SUM(Quantity)
  11. FROM Northwind.dbo.Categories c
  12. JOIN Northwind.dbo.Products p ON c.CategoryID = p.CategoryID
  13. JOIN Northwind.dbo.[ORDER Details] od ON p.ProductID = od.ProductID
  14. JOIN Northwind.dbo.Orders o ON od.OrderID = o.OrderID
  15. WHERE od.UnitPrice > 90
  16. GROUP BY CategoryName, YEAR(OrderDate)
  17.  
  18. /*1B: Az előző lekérdezés eredménytábláját pivotálja az egyik alkalmasan választott mező szerint.*/
  19. SELECT [YEAR], pvt.[Beverages], pvt.[Meat/Poultry]
  20. FROM (SELECT CategoryName, YEAR(OrderDate) 'year', SUM(Quantity) 'db'
  21.     FROM Northwind.dbo.Categories c
  22.     JOIN Northwind.dbo.Products p ON c.CategoryID = p.CategoryID
  23.     JOIN Northwind.dbo.[ORDER Details] od ON p.ProductID = od.ProductID
  24.     JOIN Northwind.dbo.Orders o ON od.OrderID = o.OrderID
  25.     WHERE od.UnitPrice > 90
  26.     GROUP BY CategoryName, YEAR(OrderDate)
  27. ) SOURCE
  28. pivot (SUM(db) FOR CategoryName IN ([Beverages], [Meat/Poultry])) pvt
  29.  
  30. /*2. feladat*/
  31. /*Írjon egy T-SQL scriptet, mely a Northwind cég menedzserének munkáját segíti az alábbiak szerint.
  32.         A scriptnek egy paramétere van: egy dolgozó azonosítója. A script a paraméterül kapott
  33.             azonosítóra ellenőrzi, nincs-e már az illető dolgozónak 5-nél több területe, ha van, hibaüzenettel kilép.
  34.         Ha nincs, akkor ellenőrzi, hogy van-e olyan terület, melynek még nincs felelőse. Ha minden
  35.             területnek van már felelőse, hibaüzenettel kilép.
  36.         Ha van még szabad terület, akkor hozzárendeli a dolgozóhoz a betűrendben első szabad területet,
  37.             és megemeli az alkalmazott fizetését 25%-kal. Ezután visszaírja a dolgozóhoz hozzárendelt terület nevét.
  38.         Ha bármilyen hiba történik, a script kiírja a hibakódot és a rendszertől származó angol nyelvű hibaüzenetet.
  39. A tesztelést végző scriptben szerepeljen az eredeti helyzet helyreállítása és az eredmény ellenőrzése!
  40. A tesztelést a script minden ágára végezze el.
  41. */
  42.  
  43.  
  44. SELECT *
  45. FROM Employees
  46.  
  47. GO
  48. DECLARE @employee_id INT = 1
  49. DECLARE @territory_id INT
  50. DECLARE @territory_desc VARCHAR(30)
  51.     IF EXISTS (SELECT COUNT(TerritoryID)
  52.     FROM Northwind.dbo.EmployeeTerritories
  53.     WHERE EmployeeID = @employee_id
  54.     HAVING COUNT(TerritoryID) <= 5
  55. )
  56. BEGIN
  57.     SELECT top 1 @territory_id = TerritoryID, @territory_desc = TerritoryDescription
  58.         FROM Territories
  59.         WHERE TerritoryID NOT IN(
  60.             SELECT TerritoryID
  61.             FROM EmployeeTerritories
  62.         ) --and TerritoryID = 1 -- teszt
  63.         ORDER BY TerritoryDescription
  64.    
  65.     IF @territory_id IS NULL
  66.     BEGIN
  67.         print 'HIBA: Nincs szabad terület!'
  68.         RETURN
  69.     END
  70.     ELSE
  71.     BEGIN
  72.         INSERT INTO EmployeeTerritories VALUES(@employee_id, @territory_id)
  73.         DELETE FROM EmployeeTerritories WHERE EmployeeID=@employee_id AND CAST(TerritoryID AS INT)=@territory_id
  74.        
  75.         UPDATE Employees SET Extension = 'fasz'
  76.         WHERE EmployeeID = @employee_id -- nem volt Salary oszlop...
  77.        
  78.         --update Employees set Extension = Extension*0.8 where EmployeeID = @employee_id
  79.         print CAST(@territory_desc AS VARCHAR(30))
  80.     END
  81. END
  82. ELSE
  83. BEGIN
  84.     print 'HIBA: Több, mint 5 terület'
  85.     RETURN
  86. END
  87. GO
  88.  
  89. /*
  90. tesztelés
  91. @employee_id = 1 esetén 'DirrDurr', mert 2 területe van a dolgozónak, ami nem több, mint 5
  92. @employee_id = 2 esetén 'Fail', mert 7 területe van a dolgozónak, ami több, mint 5
  93. */
  94.  
  95. SELECT EmployeeID, COUNT(TerritoryID)
  96. FROM EmployeeTerritories
  97. GROUP BY EmployeeID
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement