Databases - Aggregaties

Er wordt grootschalig gehandeld in miljoenen adresgegevens, telefoon- en burgerservicenummers, afkomstig uit de twee belangrijkste coronasystemen van de GGD. De politie heeft vorig weekend twee personen gearresteerd die worden verdacht van deze illegale datahandel.
We bekijken een kort filmpje op deze pagina
 


1 / 35
next
Slide 1: Slide
InformaticaMiddelbare schoolhavo, vwoLeerjaar 4-6

This lesson contains 35 slides, with interactive quizzes and text slides.

time-iconLesson duration is: 50 min

Items in this lesson

Er wordt grootschalig gehandeld in miljoenen adresgegevens, telefoon- en burgerservicenummers, afkomstig uit de twee belangrijkste coronasystemen van de GGD. De politie heeft vorig weekend twee personen gearresteerd die worden verdacht van deze illegale datahandel.
We bekijken een kort filmpje op deze pagina
 


Slide 1 - Slide

This item has no instructions

Niet het onderwerp van deze les, maar neem voorzorgsmaatregelen om je bestanden niet kwijt te raken, of opgelicht te worden.

Slide 2 - Slide

This item has no instructions

In de volgende dia staan 2 keer bijna dezelfde statements.
Welke oplossing is het beste? Op de dia erna geef je het antwoord

Slide 3 - Slide

This item has no instructions

SELECT item, SUM(minutes) FROM todo_list;
SELECT item, MIN(minutes) FROM todo_list;
SELECT item, MAX(minutes) FROM todo_list;
SELECT COUNT(*) FROM todo_list ;
Bij COUNT(*) zie je het item niet. Dat zou ook niet handig zijn.
COUNT(*) telt het aantal rijen van de hele tabel, dus dan is 1 naam van een item niet zinvol

Slide 4 - Slide

This item has no instructions

We kijken naar een groepering, een GROUP BY.
Als je het woord PER gebruikt, wordt het vaak duidelijker
Het voorbeeld gaat over groeperen PER gangpad
We bekijken het voorbeeld ook in de editor

Slide 5 - Slide

This item has no instructions

id
name
quantity
aisle
1
bananas
4
7
2
peanut butter
1
2
3
dark choc bars
2
2
4
ice cream
1
12
5
cherries
6
2
6
choc syrup
1
4
COUNT(quantity)

Slide 6 - Slide

This item has no instructions

CREATE TABLE groceries (id INTEGER PRIMARY KEY, name TEXT, quantity INTEGER, aisle INTEGER);
  
INSERT INTO groceries VALUES (1, "Bananas", 56, 7);
INSERT INTO groceries VALUES(2, "Peanut Butter", 1, 2);
INSERT INTO groceries VALUES(3, "Dark Chocolate Bars", 2, 2);
INSERT INTO groceries VALUES(4, "Ice cream", 1, 12);
INSERT INTO groceries VALUES(5, "Cherries", 6, 2);
INSERT INTO groceries VALUES(6, "Chocolate syrup", 1, 4);

SELECT aisle, MIN(quantity) FROM groceries GROUP BY aisle;
SELECT aisle, MAX(quantity) FROM groceries GROUP BY aisle;
SELECT aisle, COUNT(quantity) FROM groceries GROUP BY aisle;
SELECT aisle, AVG(quantity) FROM groceries GROUP BY aisle;


Slide 7 - Slide

This item has no instructions

We bekijken nog wat code. Wat voor resultaat geeft het volgende statement:

SELECT MINUTES, COUNT (*) FROM todo_list GROUP BY minutes;

De vraag beantwoord je op de dia erna

Slide 8 - Slide

This item has no instructions

Kun je ook laten sorteren op tekst, dus alfabetisch laten sorteren?
A
Ja
B
Nee

Slide 9 - Quiz

This item has no instructions

CREATE TABLE todo_list (id INTEGER PRIMARY KEY, item TEXT, minutes INTEGER);

INSERT INTO todo_list VALUES (1, "Wash the dishes", 15);
INSERT INTO todo_list VALUES (2, "vacuuming", 20);
INSERT INTO todo_list VALUES (3, "Learn some stuff on KA", 30);

SELECT MINUTES, COUNT (*) FROM todo_list GROUP BY minutes;
SELECT item, (minutes) FROM todo_list GROUP BY minutes;


Slide 10 - Slide

This item has no instructions

Wat voor resultaat geeft het volgende statement:

SELECT MINUTES, COUNT (*) FROM todo_list GROUP BY minutes;
A
Je krijgt het aantal minuten en het aantal rijen te zien
B
Het aantal minuten wordt bij elkaar opgeteld
C
Ik snap hier nog te weinig van
D
Je krijgt per hoeveelheid minuten het aantal rijen te zien

Slide 11 - Quiz

This item has no instructions

Vandaag gaan jullie de opdracht maken: Project Design a store database.

We gaan hem samen voorbereiden, zodat je makkelijker aan de slag kunt en hem hopelijk af kunt maken in de les.

Je gaat een tabel maken voor je eigen winkel en daarmee ga je de voorraad van de spullen die je verkoopt bijhouden.

Slide 12 - Slide

This item has no instructions

Je gaat een kleine database maken, bestaande uit 1 tabel. Wat is het statement om een tabel te maken?
A
SELECT
B
INSERT INTO
C
COUNT(*)
D
CREATE TABLE

Slide 13 - Quiz

This item has no instructions

In de tabel ga je de voorraad van
de spullen, die je verkoopt, bijhouden. Wat zou een goede naam zijn voor de tabel?

Slide 14 - Open question

This item has no instructions

Je moet eerst bepalen welke spullen je gaat verkopen en welke eigenschappen je moet definiëren.
Dus: CREATE TABLE .....(eigenschap 1, eigenschap 2,.......)
Eigenschap 1 wordt een id {datatype} PRIMARY KEY. Wat is dit en welk type gebruik je daarvoor?
A
Uniek sleutelveld: INTEGER
B
Uniek sleutelveld: TEXT
C
Uniek sleutelveld: REAL

Slide 15 - Quiz

This item has no instructions

Je begint dus met:

CREATE TABLE naam_tabel(id INTEGER PRIMARY KEY,......)

Slide 16 - Slide

This item has no instructions

Als je de tabel een naam hebt gegeven, en een uniek sleutelveld hebt gemaakt, is het handig om de items een naam te geven. Wat ga je verkopen? En wat voor datatype geef je je items?
A
INTEGER
B
REAL
C
TEXT

Slide 17 - Quiz

This item has no instructions

Dus dan heb je:

CREATE TABLE naam_tabel( id INTEGER PRIMAR KEY, naam_item TEXT,.......)

Slide 18 - Slide

This item has no instructions

1 van de eigenschappen, die je moet definiëren is de voorraad. Wat is een goed datatype voor 'voorraad'?
A
INTEGER
B
REAL
C
TEXT

Slide 19 - Quiz

This item has no instructions

Dus dan heb je:

CREATE TABLE naam_tabel( id INTEGER PRIMAR KEY, naam_item TEXT, voorraad INTEGER, .......);

Slide 20 - Slide

This item has no instructions

Ook de prijs moet erbij. Wat is een goed datatype voor de prijs?
A
INTEGER
B
REAL
C
TEXT

Slide 21 - Quiz

This item has no instructions

Welk statement gebruik je om items aan je tabel toe te voegen?
A
SELECT *
B
INSERT INTO.....VALUES
C
COUNT (*)

Slide 22 - Quiz

This item has no instructions

Welk statement gebruik je om alle items, met alle eigenschappen weer te geven?
A
SELECT *
B
INSERT INTO.....VALUES
C
COUNT (*)

Slide 23 - Quiz

This item has no instructions

Als je de opdracht leest, moet je de items geven, gesorteerd naar prijs, van laag naar hoog, dus oplopend. Welk statement gebruik je voor?
A
ORDER BY ......ASC
B
ORDER BY ......DESC

Slide 24 - Quiz

This item has no instructions

Ik denk dat iedereen kan starten met de opdracht. Wat denk jij?
Denk je dat je kunt starten met de opdracht?
Wil je eerst nog meer uitleg?

Slide 25 - Poll

This item has no instructions

Voor de items die duurder zijn dan een bepaald bedrag, moet je een voorwaarde gebruiken.
In SQL doe je dat met WHERE.
Zoek op w3schools op hoe je WHERE kunt gebruiken

Slide 26 - Slide

This item has no instructions

Hoe was het ook alweer? Als je een voorwaarde aan de uitkomst wilt stellen, wat gebruik je dan ook alweer?
Bekijk deze code. Met welk statement of woord kun je hier de voorwaarde stellen alleen de films na 2000 te laten zien:

CREATE TABLE movies (id INTEGER PRIMARY KEY, name TEXT, release_year INTEGER);
INSERT INTO movies VALUES (1, "Avatar", 2009);
INSERT INTO movies VALUES (2, "Titanic", 1997);
INSERT INTO movies VALUES (3, "Star Wars: Episode IV - A New Hope", 1977);
INSERT INTO movies VALUES (4, "Shrek 2", 2004);
INSERT INTO movies VALUES (5, "The Lion King", 1994);
INSERT INTO movies VALUES (6, "Disney's Up", 2009);
 
SELECT * FROM movies WHERE release_year >= 2000 ORDER BY release_year ASC;

Slide 27 - Slide

This item has no instructions

id
name
quantity
aisle
1
bananas
4
7
2
peanut butter
1
2
3
dark choc bars
2
2
4
ice cream
1
12
5
cherries
6
2
6
choc syrup
1
4
Hoe krijg je uit de kolom quantity: De hoogste waarde of de laagste waarde?

Slide 28 - Slide

This item has no instructions

In de opdracht staat het volgende:
Tel het aantal groene items, of items gemaakt van….
De 1e stap hierin is het tellen van een bepaald aantal rijen. Daar gebruik je voor.....
A
SUM(*)
B
COUNT(*)
C
SELECT *

Slide 29 - Quiz

This item has no instructions

Nu moet je beslissen welke rijen je wilt tellen. Daar moet je een groepering voor gebruiken.
Om te bepalen welke groepering je moet kiezen, is het handig om het woord PER te gebruiken.
Een voorbeeld op de volgende dia

Slide 30 - Slide

This item has no instructions

CREATE TABLE movies (id INTEGER PRIMARY KEY, name TEXT, release_year INTEGER);
INSERT INTO movies VALUES (1, "Avatar", 2009);
INSERT INTO movies VALUES (2, "Titanic", 1997);
INSERT INTO movies VALUES (3, "Star Wars: Episode IV - A New Hope", 1977);
INSERT INTO movies VALUES (4, "Shrek 2", 2004);
INSERT INTO movies VALUES (5, "The Lion King", 1994);
INSERT INTO movies VALUES (6, "Disney's Up", 2009);
 
SELECT release_year, COUNT(*) FROM movies GROUP BY release_year;

Slide 31 - Slide

This item has no instructions

SELECT COUNT(*), release_year FROM movies GROUP BY release_year HAVING release_year >2000 ORDER BY release_year DESC;
Probeer dit statement:

Slide 32 - Slide

This item has no instructions

CREATE TABLE todo_list (id INTEGER PRIMARY KEY, item TEXT, minutes INTEGER);
INSERT INTO todo_list VALUES (1, "Wash the dishes", 15);
INSERT INTO todo_list VALUES (2, "vacuuming", 15);
INSERT INTO todo_list VALUES (3, "Learn some stuff on KA", 30);
INSERT INTO todo_list VALUES (4, "Shopping", 15);

SELECT * FROM todo_list;

/*Selecteer de totale som van de klusjes*/

SELECT SUM(minutes) FROM todo_list;

/* selecteer nu de som PER aantal minuten en voor hoeveel rijen dat geldt*/

SELECT minutes, COUNT(*), SUM(minutes) FROM todo_list GROUP BY minutes;

Slide 33 - Slide

Opbouwen:

SELECT SUM(minutes) FROM todo_list GROUP BY minutes;

SELECT minutes,  SUM(minutes) FROM todo_list GROUP BY minutes;

SELECT minutes, COUNT(*), SUM(minutes) FROM todo_list GROUP BY minutes;



Als je iets wilt groeperen, is het handig om het woord "per" te gebruiken: 

  • Het aantal producten per gangpad
  • Het aantal mensen per rol

Waar "per" voor staat, daar komt de GROUP BY
  • GROUP BY aisle
  • GROUP BY Role

Slide 34 - Slide

This item has no instructions

Exit-ticket
Ik wil graag meer uitleg
Ik wil meer zelf oefenen
Ik snapte het wel
Meer oefening is niet nodig

Slide 35 - Poll

This item has no instructions