Python Zadania: zadanie Liczby

Zadanie. Liczby
W pliku liczby.txt zapisano 500 liczb całkowitych dodatnich po jednej w każdym wierszu.
Każda liczba jest z zakresu od 1 do 100 000. Napisz program(-y) dający(-e) odpowiedzi do poniższych zadań. Zapisz uzyskane odpowiedzi w pliku wyniki4.txt, poprzedzając każdą z nich numerem odpowiedniego zadania.

Uwaga: Plik przyklad.txt zawiera przykładowe dane spełniające warunki zadania. Odpowiedzi dla danych z tego pliku są podane pod treściami zadań.

Zadanie 1
Podaj, ile z podanych liczb jest potęgami liczby 3 (czyli liczbami postaci 1 = 30 , 3 = 31, 9 = 32 itd.).
Dla pliku przyklad.txt odpowiedź wynosi 2.

Zadanie 2
Silnią liczby naturalnej k większej od 0 nazywamy wartość iloczynu 1·2·…·k i oznaczamy
przez k!.
Przyjmujemy, że 0!=1. Zatem mamy:
0! = 1,
1! = 1,
2! = 1·2 = 2,
3! = 1·2·3 = 6,
4! = 1·2·3·4 = 24 itd.
Dowolną liczbę naturalną możemy rozbić na cyfry, a następnie policzyć sumę silni jej cyfr. Na
przykład dla liczby 343 mamy 3! + 4! + 3! = 6 + 24 + 6 = 36.
Podaj, w kolejności ich występowania w pliku liczby.txt, wszystkie liczby, które są równe
sumie silni swoich cyfr.
W pliku przyklad.txt znajduje się jedna taka liczba: 145 (1!+4!+5! =1+24+120 =145).

Zadanie 3
W pliku liczby.txt znajdź najdłuższy ciąg liczb występujących kolejno po sobie i taki, że największy wspólny dzielnik ich wszystkich jest większy od 1 (innymi słowy: istnieje taka liczba całkowita większa od 1, która jest dzielnikiem każdej z tych liczb).
Jako odpowiedź podaj wartość pierwszej liczby w takim ciągu, długość ciągu oraz największą liczbę całkowitą, która jest dzielnikiem każdej liczby w tym ciągu. W pliku z danymi jest tylko jeden taki ciąg o największej długości.
Uwaga: Możesz skorzystać z zależności NWD(a, b, c) = NWD(NWD(a, b), c).

Przykład:
Dla liczb 3, 7, 4, 6, 10, 2, 5 odpowiedzią jest 4 (pierwsza liczba ciągu), 4 (długość ciągu) i 2 (największy wspólny dzielnik), natomiast dla liczb 5, 70, 28, 42, 98, 1 odpowiedzią jest 70 (pierwsza liczba ciągu), 4 (długość ciągu) i 14 (największy wspólny dzielnik).
Odpowiedź dla pliku przyklad.txt: pierwsza liczba ciągu 90, długość 5, największy wspólny dzielnik 10.

Najlepsza książka do nauki Pythona

Jeśli macie właśnie zamiar nabyć książkę do nauki Pythona i zastanawiacie się, która książka do programowania książka Python jest najlepsza dobrze trafiliście. Postaram się przedstawić wam książki, moim zdaniem, warte polecenia dla osób na różnych poziomach nauki programowania.

Automatyzacja nudnych zadań z Pythonem – Albert Sweigart

Świetna książka. W zasadzie jest w niej wszystko co potrzebne na początek. Jasno, precyzyjnie wytłumaczone. Jak dla mnie najlepsza książka.

Dla wszystkich pragnących poznać język Python. Wydaje się, że jest to klasyczna pozycja, który dobrze posłuży osobom, które dopiero zaczynają uczyć się programowania. Ale przyda się również tym, którzy gdzieś może kiedyś mieli już styczność z programowaniem w innym języku.

Książkę wydał Helion i na jego stronie można zapoznać się szczegółowo z zawartością książki, zobaczyć spis treści oraz przeczytać jeden z rozdziałów
Rozdział : Pobieranie danych z Internetu

Druga najlepsza Python książka

Czy istnieje jeszcze druga książka do Pythona, którą mogę polecić? Jeszcze nie wiem. Jeśli coś ciekawego wpadnie w moje ręce chętnie napiszę.

Książki, które mam lub miałam w ręku opisuję poniżej. Być może któraś z nich po wnikliwym przejrzeniu trafi tutaj, do tych najlepszych …

A Wy macie jakiś własny typ? Która książka okazała się tą właściwą, najlepszą dla was. Jaka książka według was powinna tutaj trafić ?

Przejrzane, przeczytane – czyli książki, które wpadły w moje ręce

Python. Rusz głową – Paul Barry

Książka jest niestandardowa. Ma zupełnie inną formułę, informacje przekazuje w różnych formach. Pełna rysunków, schematów, coś jakby notatek tworzonych niby odręcznie.

Poniżej wrzuciłam fotki zawartości, tak żebyście mogli zobaczyć o czym mówię. Normalnie odesłałabym was do strony Helionu, abyście tam przejrzeli sobie zawartość, ale tym razem nie mogę tego zrobić, gdyś wydawnictwo nic nie udostępniło.

Na razie przejrzałam pierwszy rozdział i jestem rozczarowana. Już na początku autor daje nam krótki kod programu, który mamy sobie przepisać (widoczny poniżej na stronie 4 i, który wcale nie jest prosty dla osoby początkujacej). Na jego przykładzie omówia import modułów, listy, metody … – kompletnie nie rozumiem po co już na początku pokazywać to osobie, która pierwszy raz siada do Pythona i która w Pythonie nie napisała jeszcze ani jednej linijki kodu.

Dla mnie jest to jedno wielkie poplątanie. Ale zaznaczam, że to moja bardzo subiektywna opinia o książce. O chwilę … może się jednak mylę … książka jest przeznaczona dla osób, które już miały styczność z programowaniem, może w Pythonie, a może w innym języku. Tak, wtedy ma to sens. Tylko wtedy wydaje mi się, że lepsza będzie polecana przeze mnie książka „Automatyzacja nudnych zadań z Pythonem”

Python 3. Proste wprowadzenie do fascynującego świata programowania – Zed A. Shaw

Książka Python 3

Książkę Python 3 przejrzałam dotąd pobieżnie. Na razie tylko pierwszy rzut okiem.

Treść poukładana jest w ćwiczenia. Jest to wygodne dla osób, które dopiero uczą się programować.

Na razie zauważyłam, że autor często odsyła czytelnika do poszukiwań w Internecie. Niby dobrze, uczy samodzielności, ale czy po to kupujemy książkę? Np instrukcja input i odesłanie do Internetu, żeby odnaleźć sobie co ona robi …

Książkę Python3 wydał Helion i na jego stronie, tak jak zwykle, można zapoznać się szczegółowo z zawartością książki, Zachęcam do przejrzenia pierwszego ćwiczenia (rozdziału) możecie wtedy poznać czy książka jest dla was. Wcześniejszy to ćwiczenie 0 (rozdział), gdzie omówiono instalację Pythona.
Ćwiczenie 1 : Dobry pierwszy progam

Python. Ćwiczenia praktyczne – Andrzej Kierzkowski, Marek Gawryszewski

Książka Python 3

Programować nie nauczymy się czytając książki. Programować uczymy się programując. Nawet jeśli przeczytacie kilka książek do Pythona, to aby sprawnie pisać kod musicie po prostu pisać kod,a konkretnie samodzielnie rozwiązywać konkretne problemy, zadania.

Podoba mi się to, że autorzy na początku książki Python. Ćwiczenia praktyczne – wprowadzają pojęcie algorytm oraz pokazują przykład schematu blokowego. Dalej mamy wyłożone podstawy Pythona wraz z ćwiczeniami, zadaniami do wykonania.

Książkę wydał Helion i normalnie zachęciłabym was do zapoznania się z przykładowym rozdziałem. Ale przy tej książce mam wątpliwości, czy przykładowy rozdział was nie zniechęci, jest to bowiem fragment dotyczący algorytmów. Pamiętajcie, że książka jest prosta, a to jest rodział pokazujący jak myśleć algorytmicznie, czyli jak rozwiązywać zadania z programowania
Rozdział 2 : Ćwiczenia z myślenia algorytmicznego

Python w analizie danych. Przetwarzanie danych za pomocą pakietów Pandas, NumPy oraz środowiska IPython – Wes McKinney

Książka Python 3

Na razie tylko pierwszy rzut okiem. Książka czeka jeszcze na dokładne przejrzenie.

Oczywiście nie jest to pozycja dla osób początkujących, pragnących nauczyć się podstaw Pythona.

Tutaj niedługo napiszę nieco więcej …

proszę o cierpliwość …

Książka wydana została przez wydawnictwo Helion i na jego stronie można zapoznać się ze spisem treści oraz przeczytać jeden z rozdziałów:
Rozdział 5: Rozpoczynamy pracę z biblioteką Pandas

Kurs SQL

W tym kursie SQL nauczysz się języka SQL od podstaw. Kurs koncentruje się na zagadnieniach praktycznych. Zawiera mnóstwo ćwiczeń, dzięki którym szybko i łatwo opanujesz podstawy SQL.

I. SQL Podstawy

W tej części kursu omówimy podstawowe elementy języka SQL.

Na potrzeby tego kursu wykorzystamy gotową bazę danych, wypełnioną już odpowiednimi informacjami. Nie będziemy bawić się teraz w instalację bazy, narzędzi. Ułatwimy sobie pracę i skorzystamy z bazy udostępnionej online : https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

SQL Zapytania

  1. Pobieranie informacji z tabel za pomocą instrukcji SELECT
  2. Używanie operatorów i aliasów kolumn
  3. Ograniczanie wyboru wierszy za pomocą instrukcji WHERE
  4. Operatory porównania i operatory logiczne
  5. Sortowanie wierszy tabeli za pomocą klauzuli ORDER BY
  6. Dokonywanie obliczeń za pomocą funkcji
  7. Konwersja i wyrażenia warunkowe

Programowanie dla dzieci – najlepsze książki do nauki kodowania

Postanowiłam zaopatrzyć moje dziecko w książkę, dzięki której nauczy się programowania. Poszperałam, poszukałam i przestawiam Wam moje typy. Dzisiejszy temat programowanie dla dzieci książka.

Obecnie dużo mówi się o tym, by uczyć dzieci programowania. Wydaje mi się, że większość nauczycieli prowadzących zajęcia z komputerem w szkołach, wprowadza już elementy programowania. Być może nasze dzieci poznają język LOGO i pracują w Logomocji, a może korzystają ze Scratcha.
Wszystko zależy od szkoły, nauczyciela – czy nauczyciel jest przygotowany i sam potrafi programować, czy szkoła organizuje zajęcia dodatkowe …

Wydaje mi się, że większość nauczycieli prowadzących zajęcia z komputerem w szkołach, wprowadza już elementy programowania. Być może nasze dzieci poznają język LOGO i pracują w Logomocji, a może korzystają ze Scratcha.
Wszystko zależy od szkoły, nauczyciela – czy nauczyciel jest przygotowany i sam potrafi programować, czy szkoła organizuje zajęcia dodatkowe …

Nauka programowania ma wiele zalet. Oczywiście dziecko może w przyszłości zostać dobrym programistą, a dobrym będzie oznaczało świetnie zarabiającym.

Jednak nie każde dziecko zostanie programistą, bo nie każde dziecko ma do tego predyspozycje. Czy oznacza to jednak, że nie powinniśmy uczyć dzieci programować? Ależ skąd.

Nauka programowania to dla dzieci świetna zabawa. Czy istnieje chłopiec, który nie chciałby stworzyć własnej gry komputerowe?

Tworzenie gier i innych programów jest bardzo twórcze. Programowanie rozwija logiczne myślenie i zdolność do rozwiązywania problemów.

Książki do nauki programowania dla dzieci

W tym momencie mam na biurku trzy książki dla dzieci.

  1. Kodowanie dla dzieci. Baw się i ucz ze Scratchem i Pythonem. Marc Scott
  2. Programowanie – jakie to proste!: dla dzieci. Carol Vordeman
  3. Nauka programowania z Minecraftem: buduj niesamowite światy z wykorzystaniem mocy Pythona! Craig Richardson
  4. Python dla dzieci. Programowanie na wesoło. Jason R. Briggs

Podaję je w takiej kolejności, bo taka wydawała mi się prawidłowa, jeśli oceniałam je pod kątem trudności, wieku dziecka, dla którego jest przeznaczona.

Książki mają bowiem służyć mojemu dziecku do nauki programowania. Dziecko ma dopiero 8,5 lat i chodzi do 2klasy szkoły podstawowej. Zależało mi, żeby początki były łatwe i absolutnie nie zniechęcające.

Na pierwszy ogień wybrałam więc pozycję pierwszą, czyli „Kodowanie dla dzieci”.

Kodowanie dla dzieci. Baw się i ucz ze Scratchem i Pythonem. Marc Scott

Kodowanie dla dzieci (empik ok 23zł)

Książka bardzo kolorowa, przystępna. Niestety bardzo cieniutka – 60 stron. Napisałam „niestety”, ale w zasadzie może być to plusem, bo nie przerazi młodszych dzieci.

Z tej książki korzysta obecnie moje dziecko, które ma 9 lat i chodzi do II klasy szkoły podstawowej. Wydawało mi się, że taka cieniutka kolorowa książeczka będzie w sam raz. Czy miałam rację? Otóż i tak, i nie.

To co nam się podoba w książce to to, że moje dziecko daje radę pracować z nią samo. Książka zawiera jasne instukcje krok po kroku. Dla mnie jest to też okazja, aby nauczyć dziecko takiej formy pracy, pracy samodzielnej – przedewszystkim czytania ze zrozumieniem i korzystania z instrukcji. Oczywiście nie zawsze wszystko wychodzi i czasami mój syn przegapi jakiś fragment i wtedy mamy: „mama nie wychodzi mi”.

Książka jednak mnie zaskoczyła. Wyszłam z założenia, że to taka cienka kolorowa książeczka, którą moje dziecko szybko połknie, coś tam się pobawi i w sumie niewiele się nauczy. Tymczasem wcale tak nie jest. Już pierwszy przykład zawiera definiowanie bloków i zmiennych. W kolejnym przykładzie mamy już powtórzenia. A więc od razu mamy wprowadzenie do programowania, a nie tylko same puste bawienie się programem. I za to daję jej duży plus.

Co będzie dalej i czy dziecko 9 letnie nauczy się programowania, napiszę gdy przerobimy zawarty w niej materiał. Póki co, moje dziecko jest bardzo zachęcone, i cieszy się, że jest już programistą.

Programowanie – jakie to proste!: dla dzieci. Carol Vordeman

Programowanie jakie to proste (empik ok 40zł)

Książka uczy programowania w programie Scratch oraz w języku Python. Ma ok 220 stron (Scratch zajmuje ok 60 stron, a Python ok 90str). Wnętrze książki ładne, kolorowe i wydaje mi się, że zachęcające dzieci do nauki programowania.

Napiszę od razu uczciwie, że książka nie jest jeszcze używana przez mojego 8 latka. Było tylko spojrzenie na nią i powrót do książki „Kodowanie dla dzieci”. Czeka więc sobie, gdy Scratch z „Kodowania” zostanie przerobiony i będzie można robić kolejne projekty z innej, tej, książki.

Napewno książka sprawdzi się u dzieci nieco starszych. Ma również fajne przykłady, ale ma też więcej tzw teorii. I dobrze, bo tłumaczy potrzebne zagadnienia.

Nauka programowania z Minecraftem: buduj niesamowite światy z wykorzystaniem mocy Pythona! Craig Richardson

Książka uczy programowania w Minecraftcie. Jeszcze czeka, nie jest używana. Mam bowiem mieszane uczucia co do niej. I nie zdecydowałam jeszcze, czy będziemy jej używać. Oczywiście mój syn lubi gry komputerowe, lubi też grać w Minecrafta. A ja z jednej strony chcę pokazać mu jak fajne jest programowanie, ale z drugiej strony nie chcę zachęcać go do gier. Póki co skupiam się na tym, by odciągać go od gier, tak by miał swoje zainteresowania i to je rozwijał. A nie przesiadywał przy komputerze, czy tablecie grając.

Python dla dzieci. Programowanie na wesoło. Jason R. Briggs

Książka zdecydowanie przeznaczona jest dla dzieci starszych, a w zasadzie nastolatków i młodzieży.

Książkę tylko przejrzałam z ciekawością. Może wkrótce postaram się przejrzeć ją badziej dokładnie i przedstawić opinię o niej.

Na stronie wydawnictwa Helion możecie zapoznać się z książką, zobaczyć spis treści oraz przeczytać Rozdział 1:Nie wszystkie węże są gadami

Jeśli interesuje cię programowanie w języku Python zapraszam do przeczytania wpisu o najlepszych książkach do Pythona.

Konkursy informatyczne dla dzieci

Oto lista konkursów informatycznych adresowanych do dzieci. Ujęłam tutaj konkursy, które są mi znane, gdy uczestniczyli w nich moi uczniowie.

Bóbr Międzynarodowy Konkurs Informatyczny

strona konkursu: https://www.bobr.edu.pl/

Konkurs adresowany do dzieci we wszystkich typach szkół począwszy od I klasy szkoły podstawowej do szkół ponadpodstawowych (ponadgimnazjalnych). Oczywiście dzieci startują w swoich odpowiednich kategoriach klasowych.

Kategorie:
Skrzat: I-III klasa szkoły podstawowej
Benjamin: IV-VI klasa szkoły podstawowej
VII-VIII klasa szkoły podstawowej + ostatnie klasy gimnazjum
Senior: szkoły ponadpodstawowe

Przykłady zadań:
Zadania z 2018r. – konkursowe
Zadania 2018r. – próbne
Zadania 2017r. – konkursowe
Zadania 2017 r. – próbne
Zadania 2016r. – konkursowe
Zadania 2016r. – próbne
Zadania 2015r. – konkursowe
Zadania 2015r. – próbne
Zadania 2014r.
Zadania 2013r.

Przedmiotowy konkurs informatyczny LOGIA dla uczniów klas IV-VIII szkół podstawowych

Jest to konkurs programistyczny. Uczeń rozwiązuje zadania posługując się wybranym językiem programowania: Logo lub Python.

Wcześniej poszczególne konkursy miały też nazwy minilogia, polilogia, liga zadaniowa.

Kurs SQL. Pobieranie informacji z tabel bazy danych

W tej części Kursu SQL nauczymy się pobierania, wyświetlania informacji z tabel bazy danych.

Do nauki jezyka SQL wykorzystamy gotowe narzędzie udostępnione na stronie:
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

Nasza baza danych to baza sklepu, która zawiera 8 tabel.

SQL ma tylko jedno polecenie służące do pobierania informacji z tabel bazy danych. Jest to instrukcja SELECT.

fvgf

  • Pobieranie informacji z tabel za pomocą instrukcji SELECT
  • Używanie operatorów i aliasów kolumn
  • Ograniczanie wyboru wierszy za pomocą instrukcji WHERE
  • Operatory porównania i operatory logiczne
  • Sortowanie wierszy tabeli za pomocą klauzuli ORDER BY
  • Dokonywanie obliczeń za pomocą funkcji
  • Konwersja i wyrażenia warunkowe

Problem.
W bazie danych znajduje się tabela Pracownicy (Employees) zawierająca informacje o pracownikach firmy.

Zadanie.
Przygotuj raport dla działu kadr, który będzie zawierał dane pracowników wraz z ich rocznymi zarobkami.
Nazwij kolumny tak, by odzwierciedlały zawartość i były bardziej przyjazne dla pracowników działu kadr.

Na początku poznamy tabelę Employees. Wyświetlimy jej całą zawartość.

select * from employees;

W tej części Kursu SQL nauczymy się wybierania, wyświetlania kolumn tabeli.

SQL ma tylko jedno polecenie służące do pobierania informacji z tabel bazy danych. Jest to polecenie SELECT.

ghghg

fvgf

hjhj

  • Pobieranie informacji z tabel za pomocą instrukcji SELECT
  • Używanie operatorów i aliasów kolumn
  • Ograniczanie wyboru wierszy za pomocą instrukcji WHERE
  • Operatory porównania i operatory logiczne
  • Sortowanie wierszy tabeli za pomocą klauzuli ORDER BY
  • Dokonywanie obliczeń za pomocą funkcji
  • Konwersja i wyrażenia warunkowe

Programowanie dla dzieci: Scratch

  1. Program pobieramy ze strony: https://scratch.mit.edu/download#installation

    Wersja na Windows: https://scratch.mit.edu/scratchr2/static/sa/Scratch-461.exe
  2. Instalujemy program, wystarczy kliknąć Kontynuuj.
  3. Po instalacji program uruchamia się automatycznie. Ja klikam przycisk No thanks, aby od razu przejść do pracy
  4. Zmieniamy język na język polski – obok napisu Scratch znajduje się ikona Globusu, klikamy i szukamy na liście wybranego języka



Jak zacząć programować w Javie. Java od zera: piszemy pierwszy program

Chcesz nauczyć się programować, wybrałeś język Java i zastanawiasz się jak zacząć programować w Javie? Oto szybki sposób na start.

Java: jak zacząć?

Po pierwsze liczą się dobre chęci. Potrzebujesz tylko komputera oraz JDK. Warto też zainstalować program, w którym będziesz pisał kod w Javie.

Krok 1. Java Development Kit JDK

 

Pierwszy krok to pobranie i instalacja Java Development Kit, czyli w skrócie JDK. Pobierz go ze strony http://www.oracle.com/technetwork/java/javase/downloads/index.html

 
Pobieranie JDK
 
Akceptujemy teraz licencję i wybieramy system. Poniżej pobieranie JDK dla systemu Windows:
Akceptacja licencji i pobieranie JDK
 
Instalacja nie przysparza problemów, po prostu klikamy Next, by przechodzić Dalej.
 

Krok 2. Zintegrowane środowisko programistyczne

Gdy JDK jest już zainstalowane przechodzimy do instalacji środowiska. Kod swoich programów możesz pisać nawet w zwykłym Notatniku, tylko po co …? Możesz wykorzystać nieco bardziej rozbudowane edytory takiej jak Notepad++ czy  edytor Sublime Text.
Dużo jednak wygodniej jednak skorzystać ze zintegrowanego środowiska programistycznego, w skrócie IDE. Przykładem takiego środowiska jest Eclipse jak również NetBeans.

Eclipse
Jednym z najbardziej popularnych „programów do programowania w javie” jest Eclipse.
Program możesz pobrać darmowo ze strony eclipse.org , wystarczy kliknąć Download.

Wybierasz „Eclipse IDE for Java Developers, naciskasz przycisk Install i akceptujesz licencję klikając „Accept Now”.

Gdy instalacja dobiegła końca klikasz przycisk „Launch”, by uruchomić program. Wybierasz lub potwierdzasz też katalog workspace.

Program Eclipse uruchamia się i wita nas ekran powitalny. Ja od razu zamykam zakładkę Welcome i przechodzeę do tworzenia programu / projektu.

Krok 3. Zaczynamy pracę

Zakładam, że mamy już uruchomiony program Eclipse. Zamykamy okno powitalne.

Projekt w Javie tworzymy wybierając z górnego menu: File> New>Java Project

W otwartym oknie w polu Project Name wpisz nazwę dla tworzonego projektu. W przykładzie używam nazwy Nauka, pamiętaj by nazwa projektu rozpoczynała się wielką literą. Kliknij Finish, bu utworzyć nowy projekt (w tym momencie nie będziemy zajmować się wyjaśnianiem i omawianiem poszczególnych opcji środowiska Eclipse).

Klikamy teraz prawym klawiszem myszy na nazwie projektu (u mnie Nauka) i wybieramy
New > Class:

W otwartym oknie nadajemy nazwę, zaznaczamy

W tym momencie powinniśmy zobaczyć już kod programu:

O tym jak napisać swój pierwszy program przeczytasz w kolejnym wpisie. Zapraszam …

Uwaga. Jest to pierwszy wpis z całej serii dotyczącej nauki programowania w Javie. Seria skupia się na podstawowych, praktycznych aspektach języka. Wszystkie materiały powstały z myślą o uczniach szkoły średniej, a dokładniej liceum ogólnokształcącym z rozszerzoną informatyką. Uczniowie tej szkoły mogą zdawać maturę z informatyki, wcześniej wybierając i deklarując język programowania. Jednym z języków programowania zdawanych na maturze jest właśnie Java, a jedynym dostępnym edytorem jest Eclipse.

SQL. Grupowanie wierszy Group by, Having

Tabela: pracownicy
pracownik_id
imie
nazwisko
stanowisko_id
wydzial_id
pensja
prowizja

Grupowanie wierszy

Do tego momentu funkcje agregujące wykonywały swoje operacje traktując dane jako niezróżnicowane i jednolite typy informacji. Na przykład obliczanie średniej prowizji dla wszystkich pracowników dotyczyło czytania wszystkich wierszy w kolumnie prowizja. Jednak możemy przyjąć inny scenariusz,w którym potrzebne jest obliczanie średniej  prowizji dla pracowników każdego wydziału.

Klauzula Group by

Używając klauzuli GROUP BY możemy podzielić wiersze w tabeli ma małe grupy. I wtedy użyć funkcji agregujących do uzyskana wyników dla poszczególnych grup.

Zadanie 6: rozwiązanie
Oblicz średnią prowizję dla pracowników w poszczególnych wydziałach.

SELECT wydzial_id, AVG (pensja)
FROM pracownicy
GROUP BY wydzial_id;

Ponieważ nie ma klauzuli WHERE zwracane są wszystkie wiersze z tabeli pracownicy. Następnie wiersze są grupowane według wydzial_id, więc funkcja AVG jest stosowana do kolumny pensja obliczając średnią pensję dla każdego wydziału.

Uwaga. Kiedy używasz GROUP BY upewnij się iż wszystkie kolumny, które nie mają funkcji agregujących a są wymienione w SELECT, są zawarte w klauzuli GROUP BY.

Czasami możesz potrzebować wyświetlić wyniki dla grup bez grup.

Zadanie 7
Wyświetl całkowitą sumę wynagrodzeń, które są wypłacane poszczególnym stanowisko w poszczególnych wydziałach

SELECT wydzial_id, stanowisko_id, sum(pensja)
FROM pracownicy
GROUP BY wydzial_id, job_id;

Najpierw tabela pracowników podzielona jest ze względu na id_wydziału, a następnie każda z tych grup jest pogrupowana według stanowisk.
Zauważ,  że GROUP BY grupuje wiersze lecz nie gwarantuje uporządkowania wyników. Aby posortować grupowania użyj klauzuli ORDER BY.

SELECT wydzial_id, stanowisko_id, sum(pensja)
FROM pracownicy
GROUP BY wydzial_id, job_id
ORDER BY job_id;

Klauzula Group By:

  • wszystkie kolumny w klauzuli SELECT, które nie są użyte w funkcjach agregujących muszą być użyte w klauzuli GROUP BY
  • używając klauzuli WHERE można wyłączyć wiersze zanim przydzieli się je do grup. Nie można zatem użyć Where by ograniczyć grupy np:SELECT wydzial_id, AVG(pensja)
    FROM pracownicy
    WHERE AVG(pensja)>4000
    GROUP BY wydzial_id;
  • nie można używać aliasu kolumny w klauzuli GROUP BY np:
    SELECT wydział_id as wydz, AVG(pensja)
    FROM pracownicy
    GROUP BY wydz;

Poodbnie jak klauzuli WHERE, można użyć klauzuli having aby ograniczać grypy.

Klauzula HAVING

Zadanie 8

Wyświetl maksymalne pencsje w wydziłach, które są wyższe niż 8000.

Jak to zrobić? Należy znależć maksymalną prowizję dla każdego wydziału poprzez grupowanie według numeru wydziału. W tej systuacji nie możemy jednak zastosowac klauzuli Where (patrz punkty wyżej).

SELECT wydzial_id , MAX(pensja)
FROM pracownicy
GROUP BY wydział_id
HAVING MAX(pensja)>8000;

Jak wykonywane jest to zapytanie? Gdy używasz HAVING Serwer Oracle wykonuje następujące kroki:

  1. Najpierw wiersze są grupowane zgodnie z GROUP BY
  2. Następnie do grup zastowawna jest funkcja agregująca (MAX)
  3. Grupy, które spełniają krytera HAVING są wyświetlane

Zadanie 9
Wyświetl raport obliczający średnią pensję w każdym wydziale i wtedy wyświetlający maksymalną średnią pensję.

SELECT MAX(AVG(pensja))
FROM pracownicy
GROUP BY wydzial_id;

Zauważ, że klauzula GROUP BY jest obowiązkowa podczas zagnieżdżania funkcji grupujących.

SQL. Funkcje agregujące Avg, Count, Max, Min, Sum, Nvl

Tabela: pracownicy
pracownik_id
imie
nazwisko
stanowisko_id
wydzial_id
pensja
prowizja

Zadanie 1
Wykonaj raport dotyczący minimalnej, maksymalnej i średniej pensji oraz sumie miesięcznych zarobków hadlowców z działu sprz

Funkcje agregujące

Wykonanie tego raportu wymaga zastosowania operatorów matematycznych na kolumnie pensja i wybranych rekordach tabeli pracownicy.

SQL udostępnia funkcje agregujące, które operują na zbiorze wierszy i zwracają jednen wynik dla grupy.

SELECT AVG(pensja), MAX(pensja), MIN(pensja), SUM(pensja)
FROM pracownicy
WHERE stanowisko_id Like ‚%HAND%’;

AVG
COUNT – zlicza ilość wartości nie NULL
MAX – zwraca maksymalną wartość ignorując wartości NULL
MIN – zwraca minimalną wartość ignorując wartości NULL
SUM – zwraca sumę wartości ignorując wartości NULL

Zadanie 2
Wyświetl pracownika, który pracuje w firmie najdłużej i najkrócej.

SELECT MIN(data_zatrudnienia), MAX(data_zatrudnienia)
FROM pracownicy;

Zadanie 3
Wyświetl liczbę pracowników, którzy otrzymują prowizję w wydziale nr 8

SELECT COUNT (prowizja_proc)
FROM pracownicy
WHERE wydzial_id=8;

Zadanie 4
Utwórz raport, który wyświetli liczbę wydziałów, które zatrudniają pracowników (czyli nie chcesz zliczyć oddziałów, które nie mają pracowników).

SELECT COUNT (DISTINCT wydzial_id)
FROM pracownicy;

Jak pamiętasz funkcje agregujące ignorują wartości NULL.

Zadanie 5
Oblicz średnią prowizję otrzymywaną przez pracowników

SELECT AVG(prowizja_proc)
FROM employess;

Powyższe zapytanie zwróci średnią dla pracowników, którzy otrzymują prowizję, a nie dla wszystkich pracowników. Pamiętaj, że funkcje agregujące ignorują wartości NULL. Jeśli chcesz otrzymać poprawną średnią użyj funkcji Nvl.

Aby zmusić funkcje agregujące do włączenia wartości NULL należy używać funkcji NVL.

Powyższe zapytanie powinno wyglądać tak:
SELECT AVG (NVL(prowizja_proc,0))
FROM pracownicy;

W tym zapytania dla każdego pracownika, który nie otrzymuje prowizji, podstawiana jest wartość 0. Średnia jest wtedy obliczana jako całkowita prowizja wypłacana wszystkim pracownikom podzielona przez ilość wszystkich pracowników w firmie. Średnia jest obliczana na podstawie wszystkich wierszy w tabeli, niezależnie od tego czy wartości null są przechowywane w kolumnie prowizja_proc.

Zadanie 6
Oblicz średnią prowizję dla pracowników w poszczególnych wydziałach.

Aby napisać to zapytanie potrzebujemy czegoś więcej niż tylko funkcji obliczającej średnią, czyli AVG. Musimy, w jakiś sposób wyodrębnić średnią dla pracowników poszczególnych wydziałów, a nie wszystkich pracowników firmy. W tym przypadku potrzebujemy funkcji grupujących wiersze. O funkcjach tych przeczytasz we wpisie Podstawy SQL. Grupowanie wierszy