Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe

Podobne dokumenty
Wprowadzenie do SQL TEMAT 4 - Zadania dodatkowe

Krok 1. SELECT Symbol AS KS INTO Dzielnik FROM Towary WHERE (Nazwa='Orzeszki solone') OR (Nazwa = 'Zupy CHOISE') OR (Nazwa = 'Kawa BURG');

Bazy danych SQL Server 2005

Wprowadzenie do SQL. Instrukcja laboratoryjna. Ludmiła Rekuć, Witold Rekuć

SQL (ang. Structured Query Language)

Wprowadzenie do SQL. Instrukcja laboratoryjna

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Zadania z SQLa (MS SQL Server)

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Bazy danych. Wykład V Kwerendy. Copyrights by Arkadiusz Rzucidło 1

Autor: Joanna Karwowska

Kwerenda. parametryczna, z polem wyliczeniowym, krzyżowa

Autor: Joanna Karwowska

Bazy danych. dr inż. Arkadiusz Mirakowski

8.9. Język SQL Kwerenda wybierająca w języku SQL

Autor: Joanna Karwowska

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Relacyjne bazy danych. Podstawy SQL

ACESS- zadania z wykorzystaniem poleceń SQL

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Podstawy Informatyki Wykład X

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

Bazy danych w arkuszu

SQL - Structured Query Language. strukturalny język zapytań

Grupowanie i funkcje agregujące

NORTHWIND. Anonco.pl. ćwiczenia praktyczne. KiK s Tutorials. NORTHWIND dwiczenia praktyczne. ANONCO.PL/SQL SQLSERVERDLAOPORNYCH.WORDPRESS.

Bazy danych. Instrukcja laboratoryjna

Wykład 6. SQL praca z tabelami 3

Struktura bazy danych

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

SQL praca z tabelami 4. Wykład 7

Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium, które zostanie przeprowadzone na przedostatnim wykładzie

Technologia przetwarzania danych. Instrukcja laboratoryjna

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Podstawowe zapytania SELECT (na jednej tabeli)

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Relacyjne bazy danych. Podstawy SQL

Projektowanie Systemów Inf.

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

PODZAPYTANIE (SUBSELECT)

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy danych kwerendy (moduł 5) 1. Przekopiuj na dysk F:\ bazę M5KW.mdb z dysku wskazanego przez prowadzącego

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Baza danych Uczniowie.mdb

Marek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

E.14 Bazy Danych cz. 13 SQL Grupowanie danych i funkcje grupujące

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Wyświetl imie i nazwisko ucznia, nazwę przedmiotu z którego otrzymał ocenę niedostateczną. Nazwij tę kwerendę oceny niedostateczne.

Specyfika języka SQL powoduje, że łatwiej jest najpierw wytłumaczyć, jak korzystać z funkcji grupujących, a dopiero później jak grupować dane.

Wprowadzenie do języka SQL

Wykład 5. SQL praca z tabelami 2

Kwerendy (zapytania) wybierające

Podyplomowe Studia Systemy informatyczne w logistyce

Przykładowa baza danych BIBLIOTEKA

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Przestrzenne bazy danych Podstawy języka SQL

Język SQL podstawy zapytań

Optymalizacja poleceń SQL Metody dostępu do danych

Systemy GIS Tworzenie zapytań w bazach danych

Bazy Danych. SQL Podstawy języka II: zapytania. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

MS Access - bazy danych.

Język SQL w Delphi. 1. Kwerendy Przygotowanie do ćwiczenia Komenda SELECT

Map Reduce Proste zliczanie słów i zapytania SQL

Zapytania do bazy danych

Operacja Teta-złączenia. v1 v1 Θ v2

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

3. Podzapytania, łączenie tabel i zapytań

P o d s t a w y j ę z y k a S Q L

MS Access - bazy danych. Ćwiczenia. Jak to zrobić? - "Tdane.dbf" b.

Tabela SPRZEDAŻ WYCIECZEK

Widok Connections po utworzeniu połączenia. Obszar roboczy

Microsoft SQL Server Podstawy T-SQL

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Agregacja i Grupowanie Danych. Funkcje Agregacji. Opcje GROUP BY oraz HAVING

Ćwiczenie zapytań języka bazy danych PostgreSQL

Ćwiczenie 3 funkcje agregujące

Zapytania INSERT. Forma_platnosci. INSERT INTO forma_platnosci VALUES ('1', 'Gotówka'); INSERT INTO forma_platnosci VALUES ('2', 'Przelew odroczony');

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Plan. Wyświetlanie n początkowych wartości (TOP n) Użycie funkcji agregujących. Grupowanie danych - klauzula GROUP BY

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

- Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

Wykład III. dr Artur Bartoszewski Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych

Kurs. Podstawy MySQL

Paweł Rajba

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

Jerzy Nawrocki, Wprowadzenie do informatyki

Konstruowanie Baz Danych DQL agregacja danych

Bazy danych. Polecenia SQL

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Technologie baz danych

Transkrypt:

Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe 1. Wyselekcjonować firmy z Wrocławia lub Krakowa, którym Nasza firma sprzedała cokolwiek w sierpniu 1992 (użyj funkcji Year i Month). SELECT DISTINCT FIRMY.Nr, FIRMY.Nazwa FROM (FIRMY INNER JOIN DOKUMENTY ON FIRMY.Nr = DOKUMENTY.NrNabywcy) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE (MIEJSCOWOŚCI.Nazwa="Wrocław" OR MIEJSCOWOŚCI.Nazwa="Kraków") AND NrSprzedawcy=0 AND MONTH(Data)=8 AND YEAR(Data)=1992; Uwaga: Nazwy pól muszą być kwalifikowane pole NAZWA zdefiniowano w tabelach FIRMY i MIEJSCOWOŚCI;

2. Znaleźć miejscowości klientów Naszej firmy, którzy to klienci kupili ryż na kwotę większą niż 30 zł jednorazowo lub kupili kawę na kwotę większą niż 50 zł jednorazowo. SELECT DISTINCT Kod, MIEJSCOWOŚCI.Nazwa FROM (((TOWARY INNER JOIN POZYCJEDOKUMENTU ON TOWARY.Symbol = POZYCJEDOKUMENTU.SmbTow) INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrSprzedawcy = DOKUMENTY.NrSprzedawcy AND POZYCJEDOKUMENTU.NrFaktury = DOKUMENTY.NrFaktury) INNER JOIN FIRMY ON DOKUMENTY.NrNabywcy =FIRMY.Nr) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc= MIEJSCOWOŚCI.Kod WHERE ((TOWARY.Nazwa Like "*kawa*" AND [ilość]*[cenanetto]>50) OR (TOWARY.Nazwa Like "*ryż*" AND [ilość]*[cenanetto]>30)) AND DOKUMENTY.[NrSprzedawcy]=0;

3. Dla każdej firmy z Wrocławia znaleźć sumaryczną kwotę podatku VAT zapłaconego w związku z zakupami w "Naszej Firmie" w lipcu 1992 (użyj funkcji Year i Month). SELECT FIRMY.Nr, FIRMY.Nazwa, Sum([ilość]*[cenanetto]*[stawkaVat]) AS VAT FROM (((MIEJSCOWOŚCI INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN DOKUMENTY ON FIRMY.Nr = DOKUMENTY.NrNabywcy) INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury AND DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE DOKUMENTY.NrSprzedawcy=0 AND Year(data)=1992 AND Month(data)=7 GROUP BY FIRMY.Nr, FIRMY.Nazwa;

4. Znaleźć dwie najlepsze (pod względem kwoty sprzedaży) firmy, u których zaopatrywała się Nasza firma w lipcu 1992 (użyj funkcji Year i Month). SELECT TOP 2 FIRMY.Nr, FIRMY.Nazwa, Sum([ilość]*[cenanetto]) AS KWOTA FROM (FIRMY INNER JOIN DOKUMENTY ON FIRMY.Nr = DOKUMENTY.NrSprzedawcy) INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury WHERE DOKUMENTY.NrNabywcy=0 AND Year(data)=1992 AND Month(data)=7 GROUP BY FIRMY.Nr, FIRMY.Nazwa ORDER BY Sum(ilość*cenanetto) DESC;

5. Znaleźć trzy najlepiej sprzedające się towary klientom Naszej firmy z woj. dolnośląskiego. UWAGA: Kryterium wyboru 3 firm jest najwyższa sumaryczna kwota sprzedaży, ale z treści zadania nie wynika potrzeba pokazania kwoty. Dlatego na liście pól brak wyrażenia obliczającego kwotę i jest ono tylko w klauzuli ORDER. SELECT TOP 3 Symbol, TOWARY.Nazwa FROM ((((WOJEWÓDZTWA INNER JOIN MIEJSCOWOŚCI ON WOJEWÓDZTWA.Kod = MIEJSCOWOŚCI.KodWoj) INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN DOKUMENTY ON FIRMY.Nr = DOKUMENTY.NrNabywcy) INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy=POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury=POZYCJEDOKUMENTU.NrFaktury ) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow=TOWARY.Symbol WHERE WOJEWÓDZTWA.Nazwa="dolnośląskie" AND DOKUMENTY.NrSprzedawcy=0 GROUP BY Symbol, TOWARY.Nazwa ORDER BY Sum(ilość*cenanetto) DESC;

6. Utworzyć arkusz informujący na jaką kwotę wystawiła faktury Nasza firma (jedna liczba!). UWAGA: W treści zadania podkreślono, ze wynik ma stanowić jedna liczba, dlatego też nie wymieniono w liście pól kwerendy SELECT pola NrSprzedawcy. Dla obliczenia potrzebnej kwoty wystarczy umieszczenie nazwy tego pola w klauzuli GROUP BY. SELECT Sum([Ilość]*[cenanetto]) AS [Sumaryczna KWOTA wystawionych faktur] FROM POZYCJEDOKUMENTU WHERE NrSprzedawcy=0 GROUP BY NrSprzedawcy;

7. Utworzyć arkusz informujący na jaką kwotę przeprowadził transakcje każdy nabywca Naszej firmy z każdym z towarów. UWAGA: Pola Nazwa wymagają kwalifikacji występują zarówno w tabeli FIRMY jak i w tabeli TOWARY. SELECT Nr, FIRMY.Nazwa, Symbol, TOWARY.Nazwa, Sum(ilość*cenanetto) AS Kwota FROM ((FIRMY INNER JOIN DOKUMENTY ON FIRMY.Nr = DOKUMENTY.NrNabywcy) INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE DOKUMENTY.NrSprzedawcy=0 GROUP BY Nr, FIRMY.Nazwa, Symbol, TOWARY.Nazwa;

8. Utworzyć arkusz informujący, na jaką kwotę Nasza firma nabyła każdy z towarów z rozbiciem na województwa firm. SELECT Symbol, TOWARY.Nazwa, WOJEWÓDZTWA.Kod, WOJEWÓDZTWA.Nazwa, Sum([ilość]*[cenanetto]) AS KWOTA_zakupu_przez_NF FROM ((((TOWARY INNER JOIN POZYCJEDOKUMENTU ON TOWARY.Symbol = POZYCJEDOKUMENTU.SmbTow) INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrFaktury=DOKUMENTY.NrFaktury AND POZYCJEDOKUMENTU.NrSprzedawcy= DOKUMENTY.NrSprzedawcy ) INNER JOIN FIRMY ON DOKUMENTY.NrSprzedawcy = FIRMY.Nr) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod) INNER JOIN WOJEWÓDZTWA ON MIEJSCOWOŚCI.KodWoj = WOJEWÓDZTWA.Kod WHERE DOKUMENTY.NrNabywcy=0 GROUP BY Symbol, TOWARY.Nazwa, WOJEWÓDZTWA.Kod, WOJEWÓDZTWA.Nazwa;

9. Utworzyć arkusz danych informujący o tym, z iloma różnymi towarami każdy z nabywców Naszej firmy miał do czynienia (inaczej mówiąc, należy określić liczność asortymentu towarów kupowanych przez klientów). Zadanie wykonać w dwóch krokach: 1 - utworzyć arkusz o następujących kolumnach: NrNabywcy, SymbolTowaru nie zawierający duplikatów; SELECT DISTINCT NrNabywcy, SmbTow FROM DOKUMENTY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury WHERE DOKUMENTY.NrSprzedawcy=0;

2 - na podstawie kwerendy z kroku 1 przeprowadzić agregację (funkcja Count) i utworzyć arkusz danych o kolumnach: NazwaNabywcy, Liczność asortymentu. UWAGA: W tym kroku należy dokonać złączenia kwerendy z kroku 1 z tabelą FIRMY. SELECT Nazwa, Count(T3_zad_dod_9_krok_1.SmbTow) AS Liczność_asortymentu FROM T3_zad_dod_9_krok_1 INNER JOIN FIRMY ON T3_zad_dod_9_krok_1.NrNabywcy = FIRMY.Nr GROUP BY Nazwa;

10. Na podstawie wyniku zadania 9 utworzyć tabelę zawierającą 10 klientów o najbardziej szerokich zainteresowaniach (największej liczności asortymentu). UWAGA: Jako wynik zadania pokazana jest tabela utworzona w kwerendzie T3_zad_dod_10. W tabeli zostało zapisanych 13 rekordów ponieważ w czterech ostatnich Liczność_asortymentu była jednakowa równa 7. Dla sprawdzenia można Liczność_asortymenu dopisać do listy pól w kwerendzie tworzącej tabelę. Kwerenda tworząca tabelę wynikową (z polem Liczność dodanym dla kontroli co nie jest niezbędne dla realizacji zadania): SELECT TOP 10 Nazwa, Liczność_asortymentu INTO [10-najlepszych klientów] FROM T3_zad_dod_9_krok_2 ORDER BY [T3_zad_dod_9_krok_2].Liczność_asortymentu DESC;

11. Utworzyć arkusz informujący o liczności asortymentu towarów nabywanych przez Naszą firmę w każdym województwie. Krok 1: SELECT DISTINCT Nazwa, SmbTow FROM (((WOJEWÓDZTWA INNER JOIN MIEJSCOWOŚCI ON WOJEWÓDZTWA.Kod = MIEJSCOWOŚCI.KodWoj) INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN POZYCJEDOKUMENTU ON FIRMY.Nr = POZYCJEDOKUMENTU.NrSprzedawcy) WHERE NrSprzedawcy<>0;

Krok 2: SELECT WOJEWÓDZTWA.Nazwa AS [Nazwa województwa], Count(T3_zad_dod_11_cz_1.SmbTow) AS [Liczba towarów] FROM T3_zad_dod_11_cz_1 INNER JOIN WOJEWÓDZTWA ON T3_zad_dod_11_cz_1.Kod = WOJEWÓDZTWA.Kod GROUP BY WOJEWÓDZTWA.Nazwa;

12. Utworzyć arkusz informujący klientom z ilu województw był sprzedany przez Naszą firmę każdy towar. Krok 1: znalezienie informacji o towarach sprzedawanych przez Nasza firmę w różnych województwach SELECT DISTINCT SmbTow, KodWoj FROM ((POZYCJEDOKUMENTU INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrSprzedawcy=DOKUMENTY.NrSprzedawcy AND POZYCJEDOKUMENTU.NrFaktury=DOKUMENTY.NrFaktury) INNER JOIN FIRMY ON DOKUMENTY.NrNabywcy = FIRMY.Nr) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc=MIEJSCOWOŚCI.Kod WHERE DOKUMENTY.NrSprzedawcy=0; Krok 2: Zliczenie kodów województw dla każdego towaru sprzedawanego przez NF SELECT TOWARY.Symbol, TOWARY.Nazwa, Count(T3_zad_dod_12_cz_1.[KodWoj]) AS [Liczba woj w których NF sprz towar] FROM (T3_zad_dod_12_cz_1 INNER JOIN TOWARY ON T3_zad_dod_12_cz_1.SmbTow = TOWARY.Symbol) INNER JOIN WOJEWÓDZTWA ON T3_zad_dod_12_cz_1.KodWoj = WOJEWÓDZTWA.Kod GROUP BY TOWARY.Symbol, TOWARY.Nazwa;

13. Wykonać zestawienie obrotów Naszej Firmy z podziałem na miesiące (1..12) roku zadanego parametrem (użyj funkcji Year i Month). SELECT Month([Data]) AS Miesiąc, Sum([ilość]*[cenanetto]) AS [Obroty miesięczne] FROM DOKUMENTY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury WHERE DOKUMENTY.NrSprzedawcy=0 GROUP BY Month([Data]), Year([DATA]) HAVING Year([DATA])= [podaj rok:]; Uwaga: Zastosowanie parametru wymaga jedynie podania nazwy pola, które nie istnieje w tabelach określonych w klauzuli FROM, w pozycji, gdzie oczekiwana jest konkretna wartość (np. w wyrażeniu kryterium selekcji). W zadaniu taką nazwa jest [podaj rok:] Po uruchomieniu wyświetlone zostaje okno komunikacyjne. Należy wprowadzić liczbę np. 1992 i zaakceptować Wynik po wprowadzeniu 1992 roku.