Miesięczne archiwum: Listopad 2016

XAMPP PhpMyAdmin import dużej bazy danych.

XAMPP PhpMyAdmin import dużej bazy danych.

Co należy zrobić kiedy przy imporcie bazy danych na serwerze XAMPP otrzymamy komunikat "Nie otrzymano żadnych danych do importu. Albo nie dostarczono nazwy pliku, albo jego rozmiar przekroczył rozmiar maksymalny, dozwolony przez konfigurację PHP. Zobacz FAQ…" ?

Naszym problemem jest ograniczenie w wielkości pliku bazy danych który chcemy zaimportować. W moim przypadku jest to 2M a korzystam z XAMPP w wersji 1.7.7. Aby zwiększyć rozmiar dopuszczalnego pliku musimy odnaleźć plik php.ini w którym należy zwiększyć tą wartość. Standardowo plik php.ini znajduje się w lokalizacji gdzie zainstalowaliśmy serwer XAMPP, następnie przechodzimy do katalogu php w którym znajdziemy nasz pliczek php.ini. Kolejny krok to wyedytowanie naszego pliku. W tym celu klikamy prawym przyciskiem myszy na naszym pliku u z menu wybieramy opcję otwórz za pomocą i z kolejnego rozwijalnego menu wybieramy opcję notatnik.
Kolejnym krokiem jest wyszukanie odpowiedniego fragmentu pliku do modyfikacji. W tym celu wciskamy kombinację klawiszy Ctrl +F. Po wybraniu tej kombinacji klawiszy uruchomi się okno znajdowanie i w polu Znajdź wpisujemy upload_max_filesize. Tak jak wspomniałem wcześniej ja w swojej wersji XAMPP-a mam ograniczenie do 2 mega i w moim przypadku ten fragment wygląda następująco.

upload_max_filesize=2M

 teraz wystarczy zmienić wartość po znaku "=" na odpowiedni, czyli taki żebyśmy mogli zaimportować naszą bazę danych.

Powodzenia 🙂

 

Northwind 32. Oblicz ilość klientów którzy nie złożyli żadnego zamówienia.

Baza : Northwind

Ćwiczenie nr: 32

Treść ćwiczenia: Oblicz ilość klientów którzy nie złożyli żadnego zamówienia.

Polecenia/funkcje w zapytaniu: SELECT, FROM, WHERE, Aliasy, COUNT(), LEFT JOIN, IS NULL


   


Rozwiązanie:

 

Zapytanie:

Wynik uruchomienia zapytania

Liczba rekordów: 1

Pobierz skrypt sql


   


 

Adventureworks 30. Oblicz wartość każdego zamówienia.

Baza : Adventureworks

Ćwiczenie nr: 30

Treść ćwiczenia: Oblicz wartość każdego zamówienia.

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


   sql server adventureworks exercises queries


Rozwiązanie:

 

Zapytanie:

SELECT
     Z.SalesOrderID AS [ID Zamówienia]
    ,SUM(D.UnitPrice * D.OrderQty)AS [Wartość zamówienia]

FROM
    Sales.SalesOrderHeader Z JOIN Sales.SalesOrderDetail D
        ON     Z.SalesOrderID = D.SalesOrderID
 GROUP BY
    Z.SalesOrderID    
ORDER BY
    [ID Zamówienia]       

Wynik uruchomienia zapytania

Liczba rekordów: 31465

Pobierz skrypt sql


   sql server adventureworks exercises queries


 

Adventureworks 27a. Oblicz czy wartość zamówienia jest mniejsza czy większa/równa średniej wartość zamówień. Wykorzystaj deklarację zmiennej.

Baza : Adventureworks

Zadanie nr: 27a

Treść: Oblicz (w osobnej kolumnie) czy wartość zamówienia jest mniejsza (wartość 0) czy większa/równa (wartość 1) średniej wartość zamówień. Średnią wartość zamówień oblicz przed głównym zapytaniem i jej wartość "wrzuć" do zmiennej i wykorzystaj ją w zapytaniu głownym.

Polecenia/funkcje w zapytaniu: SELECT, FROM, CASE, SUM(), AVG(), GROUP BY, DECLARE, SET


   


Rozwiązanie:

 

Zapytanie:

DECLARE @srednia float;
SET @srednia = (SELECT
                    AVG(Suma) AS ŚredniaWartośćZamówienia
                FROM
                    (    
                        SELECT
                            SalesOrderID
                            ,SUM(UnitPrice)AS Suma
                        FROM
                            Sales.SalesOrderDetail
                        GROUP BY
                            SalesOrderID)AS query);
 
SELECT
    SalesOrderID
    ,SUM(UnitPrice)AS Suma
    ,CASE
        WHEN SUM(UnitPrice)< (@srednia) THEN 0             
        ELSE 1                
        END    AS [0-mniejsze niż śr./1-większe,równe śr]                                
FROM
    Sales.SalesOrderDetail
GROUP BY
    SalesOrderID   

Wynik uruchomienia zapytania

Liczba rekordów: 31465

Pobierz skrypt sql


   


 

Adventureworks 27. Oblicz czy wartość zamówienia jest mniejsza czy większa/równa średniej wartość zamówień.

Baza : Adventureworks

Zadanie nr: 27

Treść: Oblicz (w osobnej kolumnie) czy wartość zamówienia jest mniejsza (wartość 0) czy większa/równa (wartość 1) średniej wartość zamówień.

Polecenia/funkcje w zapytaniu: SELECT, FROM, Aliasy, SUM(), CASE, AVG(), GROUP BY


   


Rozwiązanie:

 

Zapytanie:

SELECT
    SalesOrderID
    ,SUM(UnitPrice)AS Suma
    ,CASE
        WHEN SUM(UnitPrice)<
            (  SELECT
                    AVG(Suma) AS ŚredniaWartośćZamówienia
                FROM
                    (    
                        SELECT
                            SalesOrderID
                            ,SUM(UnitPrice)AS Suma
                        FROM
                            Sales.SalesOrderDetail
                        GROUP BY
                            SalesOrderID    
                    )AS squery) THEN 0    
        ELSE 1                
        END    AS [0-mniejsze niż śr./1-większe,równe śr]                                
FROM
    Sales.SalesOrderDetail
GROUP BY
    SalesOrderID   

Wynik uruchomienia zapytania

Liczba rekordów: 31465

Pobierz skrypt sql


   


 

Adventureworks 26. Oblicz średnią wartość zamówień.

Baza : Adventureworks

Zadanie nr: 26

Treść: Oblicz średnią wartość zamówień.

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


   


Rozwiązanie:

Tutaj kluczowe pytanie jest takie, czy chcemy obliczać wartość zamówienia ze zniżką czy bez?

Opcja 1. Ze zniżką.

Przy tej opcji także możemy podejść na dwa sposoby. Wartość wszystkich zamówień możemy obliczyć zliczając kolumnę 'LineTotal' w tabeli 'SalesOrderDetail' lub zliczając kolumnę 'SubTotal' w tabeli 'SalesOrderHeader'.

Poniżej 2 zapytania do sposobu 1, czyli zliczamy kolumnę 'LineTotal' w tabeli 'SalesOrderDetail'. Pierwsze zapytanie z wykorzystaniem funkcji SUM i COUNT, a drugie z wykorzystaniem funkcji SUM i AVG.

SELECT
     SUM(sub_query.wartoscPojedynczegoZamowienia)/ COUNT(*) AS [SredniaWartoscZamowienia(SUM and COUNT)]
FROM
(
SELECT
    SUM(OD.LineTotal)AS wartoscPojedynczegoZamowienia
FROM
    Sales.SalesOrderDetail OD
GROUP BY
    OD.SalesOrderID
)AS sub_query

 

SELECT
     AVG(sub_query.wartoscPojedynczegoZamowienia)AS [SredniaWartoscZamowienia(AVG)]
FROM
(
SELECT
    SUM(OD.LineTotal)AS wartoscPojedynczegoZamowienia
FROM
    Sales.SalesOrderDetail OD
GROUP BY
    OD.SalesOrderID
)AS sub_query

sql server adventureworks tutorial

Pobież skrypt tutaj

Poniżej zapytanie do sposobu 2, czyli zliczamy kolumnę 'SubTotal' w tabeli 'SalesOrderHeader'.

SELECT
    AVG(OH.SubTotal) AS [SredniaWartoscZamowienia]
FROM
    Sales.SalesOrderHeader OH

sql server adventureworks tutorial

Pobież skrypt tutaj

 

Opcja 2. Bez zniżki.

Tutaj musimy skorzystać z metody mnożenia ceny jednostkowej przez liczbę sztuk produktu w pozycji zamówienia.

SELECT
    AVG(sub_query.suma) AS SredniaWartoscZamowieniaBezZnizki
FROM
(    
SELECT
    SUM(OD.OrderQty*OD.UnitPrice) AS Suma
FROM
    Sales.SalesOrderDetail OD
GROUP BY
    OD.SalesOrderID    
    )AS sub_query   

sql server adventureworks tutorial

Pobież skrypt tutaj