Miesięczne archiwum: Listopad 2016

Adventureworks 7 . Pokaż pracowników którzy mają ponad 50 lat.

Baza: AdventureWorks

Zadanie nr: 7

Treść: Pokaż pracowników którzy mają ponad 50 lat.

Założenie do zadania: aby zapytanie dawało cały czas taki sam wynik (żeby wynik z biegiem czasu się nie zmieniał), jako dzisiejszą datę wykorzystaliśmy datę '2016-01-01'

Polecenia/funkcje w zapytaniu: SELECT, FROM, WHERE, Alias, DATEDIFF(), INNER JOIN, ORDER BY, DESC


   


Rozwiązanie:

Zapytanie:

Wynik:

Pobierz skrypt sql


   


 

Adventureworks 25. Oblicz sumę zamówień o największej i najmniejszej wartości.

Baza : Adventureworks

Ćwiczenie nr: 25

Treść ćwiczenia: Oblicz sumę zamówień o największej i najmniejszej wartości.

Polecenia/funkcje w zapytaniu: SELECT, FROM, SUM(), TOP, Aliasy, GROUP BY, ORDER BY


   


Rozwiązanie:

 

Zapytanie:

SELECT
    (
        SELECT TOP 1
            SUM(D.OrderQty * D.UnitPrice)AS Suma
        FROM
            Sales.SalesOrderHeader Z JOIN Sales.SalesOrderDetail D
                ON Z.SalesOrderID = D.SalesOrderID
        GROUP BY
            Z.SalesOrderID        
        ORDER BY
            Suma DESC
    )
    +
    (
        SELECT TOP 1
            SUM(D.OrderQty * D.UnitPrice)AS Suma
        FROM
            Sales.SalesOrderHeader Z JOIN Sales.SalesOrderDetail D
                ON Z.SalesOrderID = D.SalesOrderID
        GROUP BY
            Z.SalesOrderID        
        ORDER BY
            Suma     
    )
    AS [SumaZamówień(Min.Max.)]   

Zdanie wyjaśnienia

to zadanie możemy rozwiązać na dwa sposoby.
1. Uwzględniając kwotę rabatu
2. Nie uwzględniając kwotę rabatu.

Powyższe zapytania nie uwzględnia kwoty rabatu. Jeżeli chcielibyśmy ją uwzględnić musimy posłużyć się innymi kolumnami. Jeżeli interesuje nas cena za wszystkie sztuki danego produktu w zamówieniu, to musimy posłużyć się kolumną "LineTotal" z tabeli "Sales.SalesOrderDetail", obliczenia dla tej kolumny uzyskujemy ze wzoru:

UnitPrice * (1-UnitPriceDiscount) * OrderQty

gdzie:
UnitPrice – to cena sprzedaży za sztukę produtku,
UnitPriceDiscount – to kwota rabatu a
OrderQty – to ilość zamówionych produktów.

czyli reasumując LineTotal to wartość zamówienia dla pojedynczego produktu w zamówieniu (uzwględniająca rabat i ilość zamówionego produktu).

Jeżeli interesuje nas ogólna wartość zamówienia (z uwzględnieniem rabatu) to możemy posłużyć się kolumną "SubTotal" a tabeli "Sales.SalesOrderHeader". Ta kolumną przechowuje wartości obliczone za pomocą formuły SUM(SalesOrderDetail.LineTotal)

Wynik uruchomienia zapytania

Liczba rekordów: 1

Pobierz skrypt sql


   


 

Northwind 25. Oblicz sumę zamówień o największej i najmniejszej wartości.

Baza : Northwind

Ćwiczenie nr: 25

Treść ćwiczenia: Oblicz sumę zamówień o największej i najmniejszej wartości.

Polecenia/funkcje w zapytaniu: SELECT, FROM, WHERE, Aliasy, SUM(), INNER JOIN, COUNT(), GROUP BY, ORDER BY


   


Rozwiązanie:

 

Zapytanie:

Wynik uruchomienia zapytania

Liczba rekordów: 1

Pobierz skrypt sql


   


 

Northwind 24. Który spedytor obsłużył zamówienia na największą wartość.

Baza : Northwind

Ćwiczenie nr: 24

Treść ćwiczenia: Który spedytor obsłużył zamówienia na największą wartość.

Polecenia/funkcje w zapytaniu: SELECT, FROM, WHERE, Aliasy, SUM(), INNER JOIN, COUNT(), GROUP BY, ORDER BY


   


Rozwiązanie:

 

Zapytanie:

Wynik uruchomienia zapytania

Liczba rekordów: 1 dla każdego sposobu

Pobierz skrypt sql