Del 1: Skapa och hantera tabeller

1. Skapa en tabell (Departments) som lagrar information om företagets avdelningar. Tabellen ska ha kolumnerna:
        
        CREATE TABLE Departments (
            DepartmentID INT PRIMARY KEY AUTO_INCREMENT,
            DeparmentName VARCHAR(50),
            Location VARCHAR(50)
        );


        
2. Lägg till tre avdelningar i tabellen Departments:

        INSERT INTO Departments (DeparmentName, Location)
        VALUES  ('IT', 'Stockholm'),
                ('HR', 'Göteborg'),
                ('Finance', 'Malmö');

        

Del 2: Grundläggande urval

3. Visa alla kunder från tabellen Customers.

        SELECT CustomerName FROM Customers;

        
4. Visa alla produkter som kostar mer än 200 kr från tabellen Products.

        SELECT ProductName FROM Products WHERE Price > 200;

        
5. Visa alla anställdas förnamn, efternamn och födelsedatum från tabellen Employees.

        SELECT FirstName, LastName, BirthDate FROM Employees;

        

Del 3: Filter och sortering

6. Visa alla beställningar från tabellen Orders som gjordes efter den 1 januari 1997.

        SELECT * FROM Orders WHERE OrderDate > '1997-01-01';

        
7. Visa kundnamn och stad för kunder som bor i "Rio de Janeiro" (Customers).

        SELECT CustomerName, City FROM Customers WHERE City = 'Rio de Janeiro';

        
8. Visa produktnamn och enhet för produkter som har "pies" i enhetsfältet (Products).

        SELECT ProductName, ProductId FROM Products WHERE Unit LIKE '%pies%';

        
9. Visa de fem senaste beställningarna från Orders, sorterade efter datum (nyast först).

        SELECT * FROM Orders ORDER BY OrderDate DESC LIMIT 5;

        

Del 4: Uppdatera och radera data

10. Uppdatera telefonnumret till "1234567890" för fraktföretaget "Speedy Express" i tabellen Shippers.

        UPDATE Shippers
        SET Phone = '0123456789'
        WHERE ShipperName = 'Speedy Express'

        
11. Uppdatera adressen för kund med ID 10 till "Main Street 456" i tabellen Customers.

        UPDATE Customers
        SET Address = 'Main Street 456'
        WHERE CustomerId = '10'

        
12. Ta bort produkten med ID 60 från tabellen Products.

        DELETE FROM Products WHERE ProductId = '60';

        
13. Ta bort alla kunder från "Germany" i tabellen Customers.

        DELETE FROM Customers WHERE Country = 'Germany';

        

Del 5: Aggregering och funktioner

14. Visa det högsta priset bland alla produkter i Products.

        SELECT MAX(Price) FROM Products;

        
15. Visa det genomsnittliga priset för alla produkter i Products.

        SELECT AVG(Price) FROM Products;

        

Del 6: Joins – koppla tabeller

16. Visa alla kunder och deras beställningar genom att koppla Customers och Orders.

        SELECT Customers.CustomerName, Orders.OrderId, Orders.OrderDate
        FROM Customers
        INNER JOIN Orders ON Customers.CustomerId = Orders.CustomerId

        
17. Visa alla produkter tillsammans med deras kategorinamn (Products + Categories).

        SELECT Products.ProductName, Categories.CategoryName
        FROM Products
        INNER JOIN Categories ON Products.CategoryId = Categories.CategoryId

        
18. Visa alla anställda tillsammans med deras avdelningsnamn och plats (Employees + Departments).

        SELECT Employees.FirstName, Employees.LastName, Departments.DeparmentName, Departments.Location
        FROM Employees
        INNER JOIN Departments ON Employees.DepartmentId = Departments.DepartmentID

        
19. Visa alla beställningar med kundnamn, orderdatum och avdelningsnamn för den ansvariga anställda.

(Använd Orders, Customers, Employees och Departments.)


        SELECT Customers.CustomerName, Orders.OrderDate, Employees.FirstName, Departments.DeparmentName, Departments.Location
        FROM (((Orders
        INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
        INNER JOIN Departments ON Employees.DepartmentId = Departments.DepartmentID)
        INNER JOIN Customers ON Orders.CustomerId = Customers.CustomerId)

        

Del 7: Avancerade frågor

20. Visa alla produkter som kostar mer än det genomsnittliga priset.

        SELECT * FROM Products WHERE Price > (SELECT AVG(Price) FROM Products);

        
21. Visa alla anställda som har hanterat fler än 2 beställningar.

        SELECT Employees.FirstName, OrderDetails.Quantity
        FROM ((Employees
        INNER JOIN Orders ON Orders.EmployeeID = Employees.EmployeeID)
        INNER JOIN OrderDetails ON Orders.OrderId = OrderDetails.OrderId)
        WHERE OrderDetails.Quantity > 2;

        
22. Visa alla kunder från "USA" och deras 20 högsta beställningar (räknat som Quantity × Price).

        SELECT Customers.CustomerName, OrderDetails.Quantity, Products.Price
        FROM (((Customers
        INNER JOIN Orders ON Orders.CustomerId = Customers.CustomerId)
        INNER JOIN OrderDetails ON OrderDetails.OrderId = Orders.OrderId)
        INNER JOIN Products ON Products.SupplierID = Orders.ShipperID)
        WHERE Customers.Country = "USA"
        ORDER BY OrderDetails.Quantity * Products.Price DESC
        LIMIT 20;

        
23. Visa alla anställda födda mellan 1950 och 1960.

        SELECT * FROM Employees
        WHERE BirthDate LIKE '195%' OR BirthDate LIKE '1960%'
        ORDER BY BirthDate Asc

        
24. Visa hur många anställda som finns i varje avdelning (Departments + Employees).

        SELECT COUNT(Employees.EmployeeID) , Departments.DeparmentName
        FROM Employees INNER JOIN Departments ON Employees.DepartmentId = Departments.DepartmentID
        GROUP BY Departments.DeparmentName

        

Del 8: VIEW och sammanfattning

25. Skapa en VIEW som heter CustomerSpending och visar:

Använd tabellerna Customers, Orders, OrderDetails och Products.


        CREATE VIEW CustomerSpending AS 
        SELECT Customers.CustomerName, (OrderDetails.Quantity * Products.Price) AS TotalSpending
        FROM Customers
        INNER JOIN Orders ON Customers.CustomerId = Orders.CustomerId
        INNER JOIN OrderDetails ON OrderDetails.OrderId = Orders.OrderId
        INNER JOIN Products ON Products.SupplierID = Orders.ShipperID


        
26. Visa de fem mest sålda produkterna (efter total antal sålda enheter).

        SELECT Products.ProductName, OrderDetails.Quantity
        FROM OrderDetails
        INNER JOIN Products ON Products.ProductId = OrderDetails.ProductId
        GROUP BY Products.ProductName
        ORDER BY OrderDetails.Quantity Desc
 
        
27. Visa alla kunder från "USA" som har gjort en beställning under de senaste 6 månaderna.

        SELECT Customers.CustomerName, Customers.Country, Orders.OrderDate FROM Customers
        INNER JOIN Orders ON Orders.CustomerId = Customers.CustomerId
        WHERE Customers.Country = "USA" AND Orders.OrderDate > "1996-08-10"
        ORDER BY Orders.OrderDate Desc