Opdrachten 2.2#
[TOC]
Inleveren#
Deze opdrachten ga je inleveren voor een cijfer. De deadline is het einde van het blok.
Maak deze opdrachten dus zelfstandig. Ongeoorloofd samenwerken heeft zeer nadelige gevolgen (zoals het niet halen van deze module).
Je levert de opdracht in als tekstbestand. Een voorbeeldbestand vind je hier. Een dergelijk bestand bewerk je met een platte tekst editor, bijvoorbeeld Kladblok in windows of notepad++.
Score: 1 punt per goede query, totaal 63 queries en het minimum is een 1, maximum 10. Dus:
cijfer = (7 + aantal_goede_queries) / 7.0
De opgaves uitvoeren#
Ga naar informatica VO SQL
Klik op het blauwe SQL-logo linksbovenin (open deze in een nieuw tabblad):
Je ziet dan:
Om SQL queries te maken, klik daar op SQL (tweede tabje)
Je ziet dan:
De secties in de opgaves komen overeen met de secties op informatica VO SQL. De tekst bij die secties legt (vaak) uit wat je nodig hebt om de queries in die sectie te kunnen maken. De opdrachten hieronder lijken heel erg op de opgaven daar, maar, zijn soms toch net even anders. Dus maak ajb de opgaven hieronder.
Een query is goed als#
De juiste gegevens worden getoond, dus
het aantal kolommen klopt,
de juiste kolommen zijn geselecteerd,
de kolomnamen kloppen,
het juiste aantal rijen is geselecteerd,
de juiste gegevens staan in de rijen,
en in de juiste volgorde indien er een sorteervoorschrift is.
In enkele gevallen staat er een restrictie bij de query zelf, zoals “gebruik geen WHERE”, of “gebruik een bepaald type JOIN”. Hierop kan ook worden gecontroleerd.
(Of de nakijkrobot daar ook naar kijkt ligt aan de hoeveelheid tijd die ik daar in kan steken; misschien pas in de loop van het blok… anders kijk ik daar met mijn ogen naar, met natuurlijke intelligentie)
Datum zaken#
MERK OP: bij datum-opgaves is het de bedoeling dat je de datum-functies gebruikt en niet gaat hacken met substring oid. Dus gebruik DAY
, MONTH
en DATE_FORMAT
etc. Daar ga ik met mijn ogen en/of de nakijkrobot op controleren. (Dat was in een vorig blok misschien anders…)
Opdrachten Sectie 1#
Query 1.1#
Toon alle kolommen en alle rijen van de tabel countries.
country_id |
country_name |
region_id |
---|---|---|
CA |
Canada |
2 |
DE |
Germany |
1 |
UK |
United Kingdom |
1 |
US |
United States of America |
2 |
Query 1.2#
Toon alle voornamen en achternamen van de tabel employees.
first_name |
last_name |
---|---|
Ellen |
Abel |
Curtis |
Davies |
Lex |
De Haan |
Bruce |
Ernst |
Pat |
Fay |
William |
Gietz |
Kimberely |
Grant |
Michael |
Hartstein |
Shelley |
Higgins |
Alexander |
Hunold |
Steven |
King |
Neena |
Kochhar |
Diana |
Lorentz |
Randall |
Matos |
Kevin |
Mourgos |
Trenna |
Rajs |
Jonathon |
Taylor |
Peter |
Vargas |
Jennifer |
Whalen |
Eleni |
Zlotkey |
Query 1.3#
Toon job_title, het maximum salaris, het minimum salaris en het verschil tussen die twee van de tabel jobs.
job_title |
max_salary |
min_salary |
verschil |
---|---|---|---|
Public Accountant |
9000 |
4200 |
4800 |
Accounting Manager |
16000 |
8200 |
7800 |
Administration Assistant |
6000 |
3000 |
3000 |
President |
40000 |
20000 |
20000 |
Administration Vice President |
30000 |
15000 |
15000 |
Programmer |
10000 |
4000 |
6000 |
Marketing Manager |
15000 |
9000 |
6000 |
Marketing Representative |
9000 |
4000 |
5000 |
Sales Manager |
20000 |
10000 |
10000 |
Sales Representative |
12000 |
6000 |
6000 |
Stock Clerk |
5000 |
2000 |
3000 |
Stock Manager |
8500 |
5500 |
3000 |
Query 1.4#
Toon de bovenste rij van de tabel countries. Let op, gebruik dus geen WHERE clause.
country_id |
country_name |
region_id |
---|---|---|
CA |
Canada |
2 |
Query 1.5#
Toon 1 rij uit de tabel countries, sla twee rijen over vanaf het begin. Let op, gebruik dus geen WHERE clause.
country_id |
country_name |
region_id |
---|---|---|
UK |
United Kingdom |
1 |
Query 1.6#
In de tabel employees staan de maand-salarissen. Maak een overzicht van de jaar-salarissen (ga uit van 12 maanden in een jaar) en toon enkel de eerste vijf rijen. Let op de kolomnamen.
achternaam |
jaarsalaris |
---|---|
King |
288000 |
Kochhar |
204000 |
De Haan |
204000 |
Hunold |
108000 |
Ernst |
72000 |
Query 1.7#
Alle personeelsleden van de tabel employees krijgen 300 dollar opslag. Maak een query voor onderstaande tabel.
achternaam |
salaris |
opslag |
nieuw_salaris |
---|---|---|---|
King |
24000 |
300 |
24300 |
Kochhar |
17000 |
300 |
17300 |
De Haan |
17000 |
300 |
17300 |
Hunold |
9000 |
300 |
9300 |
Ernst |
6000 |
300 |
6300 |
Lorentz |
4200 |
300 |
4500 |
Mourgos |
5800 |
300 |
6100 |
Rajs |
3500 |
300 |
3800 |
Davies |
3100 |
300 |
3400 |
Matos |
2600 |
300 |
2900 |
Vargas |
2500 |
300 |
2800 |
Zlotkey |
10500 |
300 |
10800 |
Abel |
11000 |
300 |
11300 |
Taylor |
8600 |
300 |
8900 |
Grant |
7000 |
300 |
7300 |
Whalen |
4400 |
300 |
4700 |
Hartstein |
13000 |
300 |
13300 |
Fay |
6000 |
300 |
6300 |
Higgins |
12000 |
300 |
12300 |
Gietz |
8300 |
300 |
8600 |
Query 1.8#
Alle personeelsleden van de tabel employees krijgen 5% opslag. Maak een query voor onderstaande tabel.
Voor de raise en nieuw salaris maakt het niet uit of er wel of geen .00 achter staat, doe daarvoor dus niet speciaal moetie.
last_name |
salary |
raise |
new_salary |
---|---|---|---|
King |
24000 |
1200.00 |
25200.00 |
Kochhar |
17000 |
850.00 |
17850.00 |
De Haan |
17000 |
850.00 |
17850.00 |
Hunold |
9000 |
450.00 |
9450.00 |
Ernst |
6000 |
300.00 |
6300.00 |
Lorentz |
4200 |
210.00 |
4410.00 |
Mourgos |
5800 |
290.00 |
6090.00 |
Rajs |
3500 |
175.00 |
3675.00 |
Davies |
3100 |
155.00 |
3255.00 |
Matos |
2600 |
130.00 |
2730.00 |
Vargas |
2500 |
125.00 |
2625.00 |
Zlotkey |
10500 |
525.00 |
11025.00 |
Abel |
11000 |
550.00 |
11550.00 |
Taylor |
8600 |
430.00 |
9030.00 |
Grant |
7000 |
350.00 |
7350.00 |
Whalen |
4400 |
220.00 |
4620.00 |
Hartstein |
13000 |
650.00 |
13650.00 |
Fay |
6000 |
300.00 |
6300.00 |
Higgins |
12000 |
600.00 |
12600.00 |
Gietz |
8300 |
415.00 |
8715.00 |
Query 1.9#
Hoeveel verdient King per dag als we uitgaan van 30 dagen in een maand? Toon van de tabel employees enkel de eerste rij hiervoor zonder een WHERE te gebruiken.
Afronden danwel het voorkomen dat er .0000 oid staat is niet belangrijk.
last_name |
salary |
per_day |
---|---|---|
King |
24000 |
800.0000 |
of
last_name |
salary |
per_day |
---|---|---|
King |
24000 |
800 |
Query 1.10#
Maak een overzicht zoals hieronder. Het zijn drie van de vier werknemers van de tabel employees die commissie krijgen over hun salaris. Je toont maar drie rijen. De bedragen zijn niet afgerond (mag wel).
last_name |
salary |
commission_pct |
commission |
salary_plus_commission |
---|---|---|---|---|
Zlotkey |
10500 |
0.20 |
2100.00 |
12600.00 |
Abel |
11000 |
0.30 |
3300.00 |
14300.00 |
Taylor |
8600 |
0.20 |
1720.00 |
10320.00 |
Opdrachten Sectie 2#
Query 2.1#
Maak een query waarmee je de structuur van de tabel jobs als uitvoer krijgt. (Hint: denk simpel, het is een heel korte query)
Field |
Type |
Null |
Key |
Default |
Extra |
---|---|---|---|---|---|
job_id |
varchar(10) |
NO |
PRI |
||
job_title |
varchar(35) |
YES |
|||
min_salary |
int(6) |
YES |
|||
max_salary |
int(6) |
YES |
Query 2.2#
Maak een overzicht met de volledige namen en de e-mailadressen eindigend op @COMPANY.COM van de tabel employees. Let op de kolomnamen.
(je hebt nog geen lowercase gehad, maar ik zal het domein in kleine letters ook geodkeuren, en alles in kleine letters ook; ik geef toe dat dit er niet uitziet)
volledige naam |
|
---|---|
Steven King |
|
Neena Kochhar |
|
Lex De Haan |
|
Alexander Hunold |
|
Bruce Ernst |
|
Diana Lorentz |
|
Kevin Mourgos |
|
Trenna Rajs |
|
Curtis Davies |
|
Randall Matos |
|
Peter Vargas |
|
Eleni Zlotkey |
|
Ellen Abel |
|
Jonathon Taylor |
|
Kimberely Grant |
|
Jennifer Whalen |
|
Michael Hartstein |
|
Pat Fay |
|
Shelley Higgins |
|
William Gietz |
|
Query 2.3#
Toon enkel de kolom commission_pct van de tabel employees. Elk commission_pct mag maar één keer getoond worden en de waarde NULL moet ook getoond worden.
commission_pct |
|
---|---|
null |
|
0.20 |
|
0.30 |
|
0.15 |
Query 2.4#
Toon de jaarsalarissen van de eerste drie rijen van de tabel employees zoals in onderstaand voorbeeld.
Jaarsalarissen |
|
---|---|
Steven King verdient 288000 dollar per jaar. |
|
Neena Kochhar verdient 204000 dollar per jaar. |
|
Lex De Haan verdient 204000 dollar per jaar. |
Query 2.5#
Maak een overzicht met de salarissen waarbij het dollarteken voor het salaris komt. Toon de eerste vijf rijen van de tabel employees.
last_name |
salaris |
---|---|
King |
$ 24000 |
Kochhar |
$ 17000 |
De Haan |
$ 17000 |
Hunold |
$ 9000 |
Ernst |
$ 6000 |
Query 2.6#
Welke department_id’s zijn er in de tabel employees? Ze mogen maar één keer getoond worden.
department_id |
|
---|---|
null |
|
10 |
|
20 |
|
50 |
|
60 |
|
80 |
|
90 |
|
110 |
Query 2.7#
Wie zijn er op 7 juni (ongeacht het jaar) in dienst gekomen? De informatie komt uit de tabel employees.
first_name |
last_name |
hire_date |
---|---|---|
Shelley |
Higgins |
1994-06-07 |
William |
Gietz |
1994-06-07 |
Query 2.8#
Toon alle personeelsleden met een telefoonnummer dat begint met 011.44. De informatie komt uit de tabel employees.
last_name |
phone_number |
---|---|
Zlotkey |
011.44.1344.429018 |
Abel |
011.44.1644.429267 |
Taylor |
011.44.1644.429265 |
Grant |
011.44.1644.429263 |
Query 2.9#
Welke afdeling van de tabel departments heeft er geen manager?
department_name |
manager_id |
---|---|
Contracting |
Query 2.10#
Welke personen werken er op de afdeling Administration (beginnend met AD)? De informatie komt uit de tabel employees.
first_name |
last_name |
job_id |
---|---|---|
Jennifer |
Whalen |
AD_ASST |
Steven |
King |
AD_PRES |
Neena |
Kochhar |
AD_VP |
Lex |
De Haan |
AD_VP |
Opdrachten Sectie 3#
Query 3.1#
Toon de volledige naam in één kolom, het job_id en het salaris van alle werknemers die ‘ST_CLERK’ zijn en een salaris hebben hoger dan 3000. Let op de kolomnamen en sorteer op salaris. De gegevens komen uit de tabel employees
.
naam |
soort_werk |
salaris |
---|---|---|
Curtis Davies |
ST_CLERK |
3100 |
Trenna Rajs |
ST_CLERK |
3500 |
Query 3.2#
Toon de city en het country_id van de tabel locations van alleen maar de landen Canada (CA) of het Verenigd Koninkrijk (UK).
city |
country_id |
---|---|
Toronto |
CA |
Oxford |
UK |
Query 3.3#
Toon de job_title, min_salary, max_salary, het verschil tussen max_salary en min_salary van de tabel jobs waarvoor geldt dat het verschil groter is dan 6000 en de job_title ongelijk is aan ‘President’. Let op de kolomnamen en sorteer op het verschil tussen max_salary en min_salary van hoog naar laag.
job_title |
min_salary |
max_salary |
verschil |
---|---|---|---|
Administration Vice President |
15000 |
30000 |
15000 |
Sales Manager |
10000 |
20000 |
10000 |
Accounting Manager |
8200 |
16000 |
7800 |
Query 3.4#
Toon employee_id, last_name en salary uit de tabel employees zoals in het voorbeeld van alle werknemers waarvoor het department_id niet NULL is, het department_id niet gelijk is aan 10, 20 of 50 en het salaris lager is dan 10000. Sorteer op het salaris van hoog naar laag.
employee_id |
last_name |
salary |
---|---|---|
103 |
Hunold |
9000 |
176 |
Taylor |
8600 |
206 |
Gietz |
8300 |
104 |
Ernst |
6000 |
107 |
Lorentz |
4200 |
Query 3.5#
Toon alle manager_id’s behalve die van 100, 102, 103, 201 en 205 uit de tabel employees
. De manager_id’s mogen maar één keer getoond worden in de lijst.
manager_id |
|
---|---|
101 |
|
124 |
|
149 |
Query 3.6#
Toon vijf achternamen achter elkaar van de tabel employees
waarvan de achternaam met een letter ‘F’ of hoger begint gesorteerd op achternaam.
last_name |
|
---|---|
Fay |
|
Gietz |
|
Grant |
|
Hartstein |
|
Higgins |
Query 3.7#
Toon first_name, last_name en salary van alle werknemers die tussen de 12000 en 20000 verdienen of een voornaam hebben die met een ‘E’ begint. Sorteer op salaris en daarna op voornaam. De gegevens komen uit de tabel employees.
first_name |
last_name |
salary |
---|---|---|
Eleni |
Zlotkey |
10500 |
Ellen |
Abel |
11000 |
Shelley |
Higgins |
12000 |
Michael |
Hartstein |
13000 |
Lex |
De Haan |
17000 |
Neena |
Kochhar |
17000 |
Query 3.8#
Toon de last_name, salary, bonus en het totale salaris van alle employees die een bonus hebben. Let op de kolomnamen, zorg dat het woordje “dollar” achter het totale salaris komt en sorteer op het totale salaris van hoog naar laag.
last_name |
salary |
bonus |
totaal |
---|---|---|---|
Abel |
11000 |
1700 |
12700 dollar |
Zlotkey |
10500 |
1500 |
12000 dollar |
Taylor |
8600 |
1250 |
9850 dollar |
Query 3.9#
Toon de naam, het e-mailadres en het telefoonnummer zoals in het voorbeeld van alle werknemers die een telefoonnummer hebben zonder een vijf (‘5’) in het nummer.
Ook hier geldt: ik zal hoofdletters in het e-mailadres negeren, als je het allemaal kleine letters wil maken dan mag dat.
naam |
mailadres |
telefoon |
---|---|---|
Eleni Zlotkey |
011.44.1344.429018 |
|
Ellen Abel |
011.44.1644.429267 |
|
Kimberely Grant |
011.44.1644.429263 |
|
Pat Fay |
603.123.6666 |
Query 3.10#
Welke werknemers zijn er allemaal op de zeventiende van een maand aangenomen? De gegevens komen uit de tabel employees en er is gesorteerd op last_name.
first_name |
last_name |
hire_date |
---|---|---|
Pat |
Fay |
1997-08-17 |
Michael |
Hartstein |
1996-02-17 |
Steven |
King |
1987-06-17 |
Trenna |
Rajs |
1995-10-17 |
Jennifer |
Whalen |
1987-09-17 |
Opdrachten Sectie 4#
Query 4.1#
Maak een overzicht met de namen van de werknemers en hun nieuwe e-mailadressen zoals in onderstaand overzicht. Als er een spatie in de naam staat (zoals bij ‘De Haan’), zal die spatie uit de naam moeten worden gehaald. Alles staat in kleine letters en het e-mailadres bestaat uit de eerste letter van de voornaam, gevolgd door een punt en daarna de achternaam met daaraan vastgeplakt de bedrijfsnaam. Er is gesorteerd op achternaam.
naam |
|
---|---|
Ellen Abel |
|
Curtis Davies |
|
Lex De Haan |
|
Bruce Ernst |
|
Pat Fay |
|
William Gietz |
|
Kimberely Grant |
|
Michael Hartstein |
|
Shelley Higgins |
|
Alexander Hunold |
|
Steven King |
|
Neena Kochhar |
|
Diana Lorentz |
|
Randall Matos |
|
Kevin Mourgos |
|
Trenna Rajs |
|
Jonathon Taylor |
|
Peter Vargas |
|
Jennifer Whalen |
|
Eleni Zlotkey |
Query 4.2#
Vervang in de tabel jobs alle job_titles waarin ‘Manager’ voorkomt het woord ‘Manager’ door ‘Director’.
old_job_title |
new_job_title |
---|---|
Accounting Manager |
Accounting Director |
Marketing Manager |
Marketing Director |
Sales Manager |
Sales Director |
Stock Manager |
Stock Director |
Query 4.3#
Om in te loggen maken de werknemers gebruik van een inlognaam die bestaat uit de eerste letter van de voornaam en de eerste letter van de achternaam, aan elkaar en in kleine letters. Maak een overzicht van de inlognamen en sorteer op de achternaam.
Dit lijkt me overigens een beetje onverstandig, stel dat Max Verstappen en Merijn Vogel op dezelfde plek werken… of Merijns vroegere baas Martijn Verhoeven
naam |
login |
---|---|
Ellen Abel |
ea |
Curtis Davies |
cd |
Lex De Haan |
ld |
Bruce Ernst |
be |
Pat Fay |
pf |
William Gietz |
wg |
Kimberely Grant |
kg |
Michael Hartstein |
mh |
Shelley Higgins |
sh |
Alexander Hunold |
ah |
Steven King |
sk |
Neena Kochhar |
nk |
Diana Lorentz |
dl |
Randall Matos |
rm |
Kevin Mourgos |
km |
Trenna Rajs |
tr |
Jonathon Taylor |
jt |
Peter Vargas |
pv |
Jennifer Whalen |
jw |
Eleni Zlotkey |
ez |
Query 4.4#
Maak een overzicht van de salarissen zoals in onderstaand overzicht. In de tweede kolom staat het maandsalaris afgerond op nul decimalen. Uitgaande van een 36 urige werkweek en vier weken in een maand staat dan in de derde kolom wat zo’n werknemer per uur verdient in twee decimalen. In de vierde kolom is dat naar beneden afgerond en in de vijfde kolom naar boven. Er is gesorteerd op achternaam.
last_name |
salary |
per_uur |
naar_boven |
naar_beneden |
---|---|---|---|---|
Abel |
11000 |
76.39 |
77 |
76 |
Davies |
3100 |
21.53 |
22 |
21 |
De Haan |
17000 |
118.06 |
119 |
118 |
Ernst |
6000 |
41.67 |
42 |
41 |
Fay |
6000 |
41.67 |
42 |
41 |
Gietz |
8300 |
57.64 |
58 |
57 |
Grant |
7000 |
48.61 |
49 |
48 |
Hartstein |
13000 |
90.28 |
91 |
90 |
Higgins |
12000 |
83.33 |
84 |
83 |
Hunold |
9000 |
62.50 |
63 |
62 |
King |
24000 |
166.67 |
167 |
166 |
Kochhar |
17000 |
118.06 |
119 |
118 |
Lorentz |
4200 |
29.17 |
30 |
29 |
Matos |
2600 |
18.06 |
19 |
18 |
Mourgos |
5800 |
40.28 |
41 |
40 |
Rajs |
3500 |
24.31 |
25 |
24 |
Taylor |
8600 |
59.72 |
60 |
59 |
Vargas |
2500 |
17.36 |
18 |
17 |
Whalen |
4400 |
30.56 |
31 |
30 |
Zlotkey |
10500 |
72.92 |
73 |
72 |
Query 4.5#
Maak een overzicht zoals hieronder. De gegevens komen uit de tabel job_history. Er is gesorteerd op employee_id.
Tip: gebruik deze functie: https://mariadb.com/kb/en/timestampdiff/
employee_id |
job_id |
start_date |
end_date |
jaren |
maanden |
---|---|---|---|---|---|
101 |
AC_ACCOUNT |
1989-09-21 |
1993-10-27 |
4 |
49 |
101 |
AC_MGR |
1993-10-28 |
1997-03-15 |
3 |
40 |
102 |
IT_PROG |
1993-01-13 |
1998-07-24 |
5 |
66 |
114 |
ST_CLERK |
1998-03-24 |
1999-12-31 |
1 |
21 |
122 |
ST_CLERK |
1999-01-01 |
1999-12-31 |
0 |
11 |
176 |
SA_REP |
1998-03-24 |
1998-12-31 |
0 |
9 |
176 |
SA_MAN |
1999-01-01 |
1999-12-31 |
0 |
11 |
200 |
AD_ASST |
1987-09-17 |
1993-06-17 |
5 |
69 |
200 |
AC_ACCOUNT |
1994-07-01 |
1998-12-31 |
4 |
53 |
202 |
MK_REP |
1996-02-17 |
1999-12-19 |
3 |
46 |
Query 4.6#
De grote baas (King) wil een overzicht van welke werknemers binnenkort 35 jaar in dienst zijn. King wil zichzelf niet op de lijst en slechts de vijf eerste werknemers die in aanmerking komen worden getoond. Er is gesorteerd op de hire_date. Het klopt dat er mensen zijn die een 35-jarig jubileum hebben in het verleden.
naam |
in_dienst |
35_jarig_jubileum |
---|---|---|
Jennifer Whalen |
1987-09-17 |
2022-09-17 |
Neena Kochhar |
1989-09-21 |
2024-09-21 |
Alexander Hunold |
1990-01-03 |
2025-01-03 |
Bruce Ernst |
1991-05-21 |
2026-05-21 |
Lex De Haan |
1993-01-13 |
2028-01-13 |
Query 4.7#
Maak een overzicht zoals hieronder. De informatie komt uit de tabel job_grades. De eerste kolom is het grootste verschil tussen highest_sal en lowest_sal, de tweede kolom is het kleinste verschil tussen highest_sal en lowest_sal en de derde kolom is het gemiddelde verschil tussen highest_sal en lowest_sal. Let op, de laatste kolom is afgerond.
grootste_verschil |
kleinste_verschil |
gemiddeld_verschil |
---|---|---|
15000 |
1999 |
6499 |
Query 4.8#
Maak onderstaand overzicht na. De informatie komt uit de tabel employees. Het gaat om het aantal rijen. De eerste kolom is het aantal inclusief de NULL en de tweede kolom is het aantal exclusief de NULL waarden bij manager_id.
aantal_personeelsleden |
aantal_met_manager |
aantal_met_commission_pct |
---|---|---|
20 |
19 |
4 |
Query 4.9#
Wat is de gemiddelde bonus van de werknemers als je ‘Abel’ niet meetelt? Het veld ‘bonus’ is het laatste veld van de tabel employees. Let op: Abel is de achternaam van Ellen Abel.
gemiddelde |
|
---|---|
1375.0 |
Query 4.10#
De werknemers van de afdeling sales (de personen met ‘SA_MAN’ of ‘SA_REP’ als job_id) krijgen 1,25% opslag. Maak het overzicht zoals hieronder. Er is gesorteerd op achternaam.
naam |
job_id |
salaris |
opslag |
nieuw_salaris |
---|---|---|---|---|
Ellen Abel |
SA_REP |
11000 |
138 |
11138 |
Kimberely Grant |
SA_REP |
7000 |
88 |
7088 |
Jonathon Taylor |
SA_REP |
8600 |
108 |
8708 |
Eleni Zlotkey |
SA_MAN |
10500 |
131 |
10631 |
Opdrachten Sectie 5#
Query 5.1#
Maak onderstaand overzicht na. De informatie komt uit de tabel departments en er is gesorteerd op department_name.
afdeling |
manager |
---|---|
Accounting |
205 |
Administration |
200 |
Contracting |
afdeling zonder manager |
Executive |
100 |
IT |
103 |
Marketing |
201 |
Sales |
149 |
Shipping |
124 |
Query 5.2#
Toon de datum van vandaag op onderstaande manier. Gebruik datum-functies.
De database-verbinding van de nakijkrobot staat ingesteld op Nederlands; van de informatica-vo website weet ik het niet zeker. Het kan zijn dat je daar voor jouw SQL-commando moet uitvoeren:
SET lc_time_names = 'nl_NL';
Dit mag je in je inleverbestand laten staan, op een aparte regel. Alle regels die beginnen met SET worden door de nakijkrobot genegeerd.
TIP: Gebruik datum-functies zoals DAY
en dergelijke.
vandaag |
|
---|---|
Vandaag is het 18 september 2022 |
Query 5.3#
Maak onderstaand overzicht na. Gebruik datum-functies, in dit geval DATE_FORMAT
voor jaar en maand. De gegevens komen uit de tabel employees
.
last_name |
hire_date |
jaar_en_maand |
---|---|---|
King |
1987-06-17 |
1987-6 |
Kochhar |
1989-09-21 |
1989-9 |
De Haan |
1993-01-13 |
1993-1 |
Hunold |
1990-01-03 |
1990-1 |
Ernst |
1991-05-21 |
1991-5 |
Lorentz |
1999-02-07 |
1999-2 |
Mourgos |
1999-11-16 |
1999-11 |
Rajs |
1995-10-17 |
1995-10 |
Davies |
1997-01-29 |
1997-1 |
Matos |
1998-03-15 |
1998-3 |
Vargas |
1998-07-09 |
1998-7 |
Zlotkey |
2000-01-29 |
2000-1 |
Abel |
1996-05-11 |
1996-5 |
Taylor |
1998-03-24 |
1998-3 |
Grant |
1999-05-24 |
1999-5 |
Whalen |
1987-09-17 |
1987-9 |
Hartstein |
1996-02-17 |
1996-2 |
Fay |
1997-08-17 |
1997-8 |
Higgins |
1994-06-07 |
1994-6 |
Gietz |
1994-06-07 |
1994-6 |
Query 5.4#
Maak onderstaand overzicht na. Met de maanden in de taal van de database en zonder voorloopnullen bij de dag. TIP: Gebruik datum-functies zoals DAY
en dergelijke.
De gegevens komen uit de tabel employees en er is gesorteerd op last_name.
overzicht_van_werknemers_met_datum_waarop_ze_in_dienst_zijn_gekomen |
|
---|---|
Ellen Abel kwam 11 mei 1996 in dienst. |
|
Curtis Davies kwam 29 januari 1997 in dienst. |
|
Lex De Haan kwam 13 januari 1993 in dienst. |
|
Bruce Ernst kwam 21 mei 1991 in dienst. |
|
Pat Fay kwam 17 augustus 1997 in dienst. |
|
William Gietz kwam 7 juni 1994 in dienst. |
|
Kimberely Grant kwam 24 mei 1999 in dienst. |
|
Michael Hartstein kwam 17 februari 1996 in dienst. |
|
Shelley Higgins kwam 7 juni 1994 in dienst. |
|
Alexander Hunold kwam 3 januari 1990 in dienst. |
|
Steven King kwam 17 juni 1987 in dienst. |
|
Neena Kochhar kwam 21 september 1989 in dienst. |
|
Diana Lorentz kwam 7 februari 1999 in dienst. |
|
Randall Matos kwam 15 maart 1998 in dienst. |
|
Kevin Mourgos kwam 16 november 1999 in dienst. |
|
Trenna Rajs kwam 17 oktober 1995 in dienst. |
|
Jonathon Taylor kwam 24 maart 1998 in dienst. |
|
Peter Vargas kwam 9 juli 1998 in dienst. |
|
Jennifer Whalen kwam 17 september 1987 in dienst. |
|
Eleni Zlotkey kwam 29 januari 2000 in dienst. |
Query 5.5#
Maak onderstaand overzicht na. De gegevens komen uit de tabel employees en er is gesorteerd op last_name.
achternaam |
functie |
salaris |
commissie_percentage |
commissie |
bonus |
totaal_salaris |
---|---|---|---|---|---|---|
Abel |
SA_REP |
11000 |
30.00 % |
3300.00 |
1700 |
16000.0 |
Davies |
ST_CLERK |
3100 |
3100.0 |
|||
De Haan |
AD_VP |
17000 |
17000.0 |
|||
Ernst |
IT_PROG |
6000 |
6000.0 |
|||
Fay |
MK_REP |
6000 |
6000.0 |
|||
Gietz |
AC_ACCOUNT |
8300 |
8300.0 |
|||
Grant |
SA_REP |
7000 |
15.00 % |
1050.00 |
8050.0 |
|
Hartstein |
MK_MAN |
13000 |
3000.0 |
|||
Higgins |
AC_MGR |
12000 |
12000.0 |
|||
Hunold |
IT_PROG |
9000 |
9000.0 |
|||
King |
AD_PRES |
24000 |
24000.0 |
|||
Kochhar |
AD_VP |
17000 |
17000.0 |
|||
Lorentz |
IT_PROG |
4200 |
4200.0 |
|||
Matos |
ST_CLERK |
2600 |
2600.0 |
|||
Mourgos |
ST_MAN |
5800 |
5800.0 |
|||
Rajs |
ST_CLERK |
3500 |
3500.0 |
|||
Taylor |
SA_REP |
8600 |
20.00 % |
1720.00 |
1250 |
11570.0 |
Vargas |
ST_CLERK |
2500 |
2500.0 |
|||
Whalen |
AD_ASST |
4400 |
4400.0 |
|||
Zlotkey |
SA_MAN |
10500 |
20.00 % |
2100.00 |
1500 |
14100.0 |
Query 5.6#
Maak onderstaand overzicht na. De informatie komt uit de tabel employees. Bij commissie staan er precies 5 streepjes (mintekens). Er is geen sortering toegepast.
achternaam |
commissie |
extra_betaling |
---|---|---|
King |
—– |
geen |
Kochhar |
—– |
geen |
De Haan |
—– |
geen |
Hunold |
—– |
geen |
Ernst |
—– |
geen |
Lorentz |
—– |
geen |
Mourgos |
—– |
geen |
Rajs |
—– |
geen |
Davies |
—– |
geen |
Matos |
—– |
geen |
Vargas |
—– |
geen |
Zlotkey |
0.20 |
gemiddeld |
Abel |
0.30 |
hoog |
Taylor |
0.20 |
gemiddeld |
Grant |
0.15 |
laag |
Whalen |
—– |
geen |
Hartstein |
—– |
geen |
Fay |
—– |
geen |
Higgins |
—– |
geen |
Gietz |
—– |
geen |
Query 5.7#
Maak onderstaand overzicht na. De informatie komt uit de tabel departments en er is gesorteerd op department_name. De landen die bij de location_id’s horen zijn als volgt:
1800 - Canada
2500 - Verenigd Koninkrijk
overig - Verenigde Staten
Tip: Gebruik CASE WHEN
.
afdeling |
land |
---|---|
Administration |
Verenigde Staten |
Marketing |
Canada |
Shipping |
Verenigde Staten |
IT |
Verenigde Staten |
Sales |
Verenigd Koninkrijk |
Executive |
Verenigde Staten |
Accounting |
Verenigde Staten |
Contracting |
Verenigde Staten |
Query 5.8#
Maak onderstaand overzicht na. De informatie komt uit de tabel employees en er is gesorteerd op salaris van hoog naar laag en daarna op achternaam.
achternaam |
salaris |
categorie |
---|---|---|
King |
24000 |
Meer dan 20.000: Je bent de grootste baas! |
De Haan |
17000 |
Meer dan 15.000: Is heel goed! |
Kochhar |
17000 |
Meer dan 15.000: Is heel goed! |
Hartstein |
13000 |
Meer dan 10.000: Is goed! |
Higgins |
12000 |
Meer dan 10.000: Is goed! |
Abel |
11000 |
Meer dan 10.000: Is goed! |
Zlotkey |
10500 |
Meer dan 10.000: Is goed! |
Hunold |
9000 |
Meer dan 5.000: Gaat wel! |
Taylor |
8600 |
Meer dan 5.000: Gaat wel! |
Gietz |
8300 |
Meer dan 5.000: Gaat wel! |
Grant |
7000 |
Meer dan 5.000: Gaat wel! |
Ernst |
6000 |
Meer dan 5.000: Gaat wel! |
Fay |
6000 |
Meer dan 5.000: Gaat wel! |
Mourgos |
5800 |
Meer dan 5.000: Gaat wel! |
Whalen |
4400 |
Minder dan 5.000: Salaris is laag! |
Lorentz |
4200 |
Minder dan 5.000: Salaris is laag! |
Rajs |
3500 |
Minder dan 5.000: Salaris is laag! |
Davies |
3100 |
Minder dan 5.000: Salaris is laag! |
Matos |
2600 |
Minder dan 5.000: Salaris is laag! |
Vargas |
2500 |
Minder dan 5.000: Salaris is laag! |
Query 5.9#
Maak onderstaand overzicht na. De informatie komt uit de tabel employees en er is gesorteerd op achternaam. Het salaris zoals in de tabel staat vermeld is het maandsalaris. Er zitten twaalf maanden in een jaar er zijn gemiddeld 365.25 dagen in een jaar.
achternaam |
per_jaar |
per_maand |
per_dag |
per_dag_onafgerond |
---|---|---|---|---|
Abel |
132000 |
11000 |
361 |
361.3963 |
Davies |
37200 |
3100 |
102 |
101.8480 |
De Haan |
204000 |
17000 |
559 |
558.5216 |
Ernst |
72000 |
6000 |
197 |
197.1253 |
Fay |
72000 |
6000 |
197 |
197.1253 |
Gietz |
99600 |
8300 |
273 |
272.6899 |
Grant |
84000 |
7000 |
230 |
229.9795 |
Hartstein |
156000 |
13000 |
427 |
427.1047 |
Higgins |
144000 |
12000 |
394 |
394.2505 |
Hunold |
108000 |
9000 |
296 |
295.6879 |
King |
288000 |
24000 |
789 |
788.5010 |
Kochhar |
204000 |
17000 |
559 |
558.5216 |
Lorentz |
50400 |
4200 |
138 |
137.9877 |
Matos |
31200 |
2600 |
85 |
85.4209 |
Mourgos |
69600 |
5800 |
191 |
190.5544 |
Rajs |
42000 |
3500 |
115 |
114.9897 |
Taylor |
103200 |
8600 |
283 |
282.5462 |
Vargas |
30000 |
2500 |
82 |
82.1355 |
Whalen |
52800 |
4400 |
145 |
144.5585 |
Zlotkey |
126000 |
10500 |
345 |
344.9692 |
Query 5.10#
Maak onderstaande mededeling na. Het is de huidige tijd en de datum. De uitvoer op jouw scherm zal dus een andere tijd en datum weergeven.
Doe deze in het Nederlands, de taal waarop de database (van de nakijkrobot) is ingesteld. Op de site van informaticavo zie je waarschijnlijk ook Nederlandse maanden / dagen etc.
TIP: Gebruik CONCAT
en DATE_FORMAT
En bedenk, 07:31 is minder mooi dan 7:31 (voor als de robot na 12am en voor 12pm nakijkt)
Het is nu… |
|
---|---|
18:09 uur op dinsdag 25 oktober 2022 week 43 |
Opdrachten Sectie 6#
Query 6.1#
Maak onderstaand overzicht op vier verschillende manieren. Je levert dus vier verschillende query’s in. De gegevens komen uit de tabellen locations en countries.
a) Met een NATURAL JOIN. b) Met een JOIN USING. c) Met een JOIN ON. d) Met een EQUI JOIN.
location_id |
state_province |
country_name |
---|---|---|
1400 |
Texas |
United States of America |
1500 |
California |
United States of America |
1700 |
Washington |
United States of America |
1800 |
Ontario |
Canada |
2500 |
Oxford |
United Kingdom |
Query 6.2#
Maak een overzicht van de department_name
s met de managers van die departments zoals hieronder. Contracting heeft geen manager maar die department_name moet er dus wel bij staan. De gegevens komen uit de tabellen departments
en empolyees
.
Let op dat Contracting
moet voorkomen als department en dat het vakje erna leeg is en niet [null]
.
department_name |
manager |
---|---|
Administration |
Jennifer Whalen |
Marketing |
Michael Hartstein |
Shipping |
Kevin Mourgos |
IT |
Alexander Hunold |
Sales |
Eleni Zlotkey |
Executive |
Steven King |
Accounting |
Shelley Higgins |
Contracting |
Query 6.3#
Maak onderstaand overzicht na. Het is een overzicht samengesteld uit de tabellen employees
en job_history
. TIP, gebruik bijvoorbeeld e
als alias voor employees
en h
of jh
als alias voor job_history
. Sorteer op last_name
en daarna start_date
.
last_name |
job_id |
start_date |
end_date |
---|---|---|---|
De Haan |
IT_PROG |
1993-01-13 |
1998-07-24 |
Fay |
MK_REP |
1996-02-17 |
1999-12-19 |
Kochhar |
AC_ACCOUNT |
1989-09-21 |
1993-10-27 |
Kochhar |
AC_MGR |
1993-10-28 |
1997-03-15 |
Taylor |
SA_REP |
1998-03-24 |
1998-12-31 |
Taylor |
SA_MAN |
1999-01-01 |
1999-12-31 |
Whalen |
AD_ASST |
1987-09-17 |
1993-06-17 |
Whalen |
AC_ACCOUNT |
1994-07-01 |
1998-12-31 |
Query 6.4#
Maak onderstaande tabel na. De gegevens komen uit de tabellen employees en job_history. Er is gesorteerd op last_name en daarna op start_date.
Er zijn twee employee_id’s die niet voorkomen in de tabel employees maar wel in job_history, die employees willen we wel zien.
employee_id |
last_name |
start_date |
end_date |
job_id |
---|---|---|---|---|
114 |
NULL |
1998-03-24 |
1999-12-31 |
ST_CLERK |
122 |
NULL |
1999-01-01 |
1999-12-31 |
ST_CLERK |
102 |
De Haan |
1993-01-13 |
1998-07-24 |
IT_PROG |
202 |
Fay |
1996-02-17 |
1999-12-19 |
MK_REP |
101 |
Kochhar |
1989-09-21 |
1993-10-27 |
AC_ACCOUNT |
101 |
Kochhar |
1993-10-28 |
1997-03-15 |
AC_MGR |
176 |
Taylor |
1998-03-24 |
1998-12-31 |
SA_REP |
176 |
Taylor |
1999-01-01 |
1999-12-31 |
SA_MAN |
200 |
Whalen |
1987-09-17 |
1993-06-17 |
AD_ASST |
200 |
Whalen |
1994-07-01 |
1998-12-31 |
AC_ACCOUNT |
Query 6.5#
Maak een overzicht van de employees die werken op de department_name Shipping
met hun job_title. Shipping
staat in departments. De job_titles staan in jobs en de last_name haal je uit employees.
Sorteer op job_title aflopend, daarna last_name.
last_name |
job_title |
---|---|
Mourgos |
Stock Manager |
Davies |
Stock Clerk |
Matos |
Stock Clerk |
Rajs |
Stock Clerk |
Vargas |
Stock Clerk |
Query 6.6#
Maak onderstaand overzicht na. De informatie komt uit de tabellen countries
en regions
.
country_id |
country_name |
region_id |
region_name |
---|---|---|---|
DE |
Germany |
1 |
Europe |
UK |
United Kingdom |
1 |
Europe |
CA |
Canada |
2 |
Americas |
US |
United States of America |
2 |
Americas |
Query 6.7#
Maak onderstaande tabel na. De gegevens komen uit employees
, departments
en jobs
. Er is gesorteerd op last_name
. Let op dat Grant ook voorkomt in het overzicht.
last_name |
department_name |
job_title |
---|---|---|
Abel |
Sales |
Sales Representative |
Davies |
Shipping |
Stock Clerk |
De Haan |
Executive |
Administration Vice President |
Ernst |
IT |
Programmer |
Fay |
Marketing |
Marketing Representative |
Gietz |
Accounting |
Public Accountant |
Grant |
Sales Representative |
|
Hartstein |
Marketing |
Marketing Manager |
Higgins |
Accounting |
Accounting Manager |
Hunold |
IT |
Programmer |
King |
Executive |
President |
Kochhar |
Executive |
Administration Vice President |
Lorentz |
IT |
Programmer |
Matos |
Shipping |
Stock Clerk |
Mourgos |
Shipping |
Stock Manager |
Rajs |
Shipping |
Stock Clerk |
Taylor |
Sales |
Sales Representative |
Vargas |
Shipping |
Stock Clerk |
Whalen |
Administration |
Administration Assistant |
Zlotkey |
Sales |
Sales Manager |
Query 6.8#
Maak onderstaand overzicht na. De gegevens komen uit de tabellen departments
en employees
. Noem elke department_name en daarachter de first_name en last_name aan elkaar van de manager. De department zonder manager (Contracting) moet ook genoemd worden. Het lege vakje is niet [null]
, maar een lege string. Er is gesorteerd op department_name
.
afdeling |
manager |
---|---|
Accounting |
Shelley Higgins |
Administration |
Jennifer Whalen |
Contracting |
|
Executive |
Steven King |
IT |
Alexander Hunold |
Marketing |
Michael Hartstein |
Sales |
Eleni Zlotkey |
Shipping |
Kevin Mourgos |
Query 6.9#
Maak onderstaand overzicht na. De gegevens komen uit de tabellen employees en jobs. Er is gesorteerd op verschil van hoog naar laag en als dat gelijk is op last_name. Met het verschil bedoelen we max_salary - min_salary.
naam |
job_title |
max_salary |
min_salary |
verschil |
---|---|---|---|---|
Steven King |
President |
40000 |
20000 |
20000 |
Neena Kochhar |
Administration Vice President |
30000 |
15000 |
15000 |
Lex De Haan |
Administration Vice President |
30000 |
15000 |
15000 |
Eleni Zlotkey |
Sales Manager |
20000 |
10000 |
10000 |
Shelley Higgins |
Accounting Manager |
16000 |
8200 |
7800 |
Michael Hartstein |
Marketing Manager |
15000 |
9000 |
6000 |
Ellen Abel |
Sales Representative |
12000 |
6000 |
6000 |
Jonathon Taylor |
Sales Representative |
12000 |
6000 |
6000 |
Kimberely Grant |
Sales Representative |
12000 |
6000 |
6000 |
Alexander Hunold |
Programmer |
10000 |
4000 |
6000 |
Bruce Ernst |
Programmer |
10000 |
4000 |
6000 |
Diana Lorentz |
Programmer |
10000 |
4000 |
6000 |
Pat Fay |
Marketing Representative |
9000 |
4000 |
5000 |
William Gietz |
Public Accountant |
9000 |
4200 |
4800 |
Jennifer Whalen |
Administration Assistant |
6000 |
3000 |
3000 |
Trenna Rajs |
Stock Clerk |
5000 |
2000 |
3000 |
Curtis Davies |
Stock Clerk |
5000 |
2000 |
3000 |
Randall Matos |
Stock Clerk |
5000 |
2000 |
3000 |
Peter Vargas |
Stock Clerk |
5000 |
2000 |
3000 |
Kevin Mourgos |
Stock Manager |
8500 |
5500 |
3000 |
Query 6.10#
De laatste opgave!
Maak onderstaand overzicht.
De informatie komt uit vijf verschillende tabellen, namelijk employees, departments, locations, countries en regions. Je moet dus alle vijf tabellen aan elkaar knopen. Er is achtereenvolgens gesorteerd op region_name, country_name, city en last_name. Ook Grant moet voorkomen in het overzicht en er mag geen NULL komen staan bij haar department_name, city, country_name en region_name.
achternaam |
afdeling |
stad |
land |
regio |
---|---|---|---|---|
Grant |
||||
Fay |
Marketing |
Toronto |
Canada |
Americas |
Hartstein |
Marketing |
Toronto |
Canada |
Americas |
De Haan |
Executive |
Seattle |
United States of America |
Americas |
Gietz |
Accounting |
Seattle |
United States of America |
Americas |
Higgins |
Accounting |
Seattle |
United States of America |
Americas |
King |
Executive |
Seattle |
United States of America |
Americas |
Kochhar |
Executive |
Seattle |
United States of America |
Americas |
Whalen |
Administration |
Seattle |
United States of America |
Americas |
Davies |
Shipping |
South San Francisco |
United States of America |
Americas |
Matos |
Shipping |
South San Francisco |
United States of America |
Americas |
Mourgos |
Shipping |
South San Francisco |
United States of America |
Americas |
Rajs |
Shipping |
South San Francisco |
United States of America |
Americas |
Vargas |
Shipping |
South San Francisco |
United States of America |
Americas |
Ernst |
IT |
Southlake |
United States of America |
Americas |
Hunold |
IT |
Southlake |
United States of America |
Americas |
Lorentz |
IT |
Southlake |
United States of America |
Americas |
Abel |
Sales |
Oxford |
United Kingdom |
Europe |
Taylor |
Sales |
Oxford |
United Kingdom |
Europe |
Zlotkey |
Sales |
Oxford |
United Kingdom |
Europe |
Tips#
De database waar je de queries voor schrijft is MariaDB versie 10.
Maak gebruik van de Handlelding en/of google met bijvoorbeeld site:mariadb.com
om zeker te weten dat je de juiste query kunt maken.
De volgorde van de vragen is niet strikt oplopend in moeilijkheid; soms is de zesde query bijvoorbeeld makkelijker dan de tweede. Loop je vast? Ga eerst even een andere query proberen.
Controleer elk antwoord op de punten hierboven bij “Een query is goed als”.
Maak de query op meerdere regels voor de leesbaarheid.
Commentaar in SQL begint met – (min min spatie), alle regels die met – beginnen worden genegeerd.
Gebruik de nakijkrobot. Je kunt er je inleverbestand in copy-pasten, dan vertelt het systeem je hoeveel je er goed hebt.
De nakijkrobot is niet heel behulpzaam en nogal binair in zijn antwoord. Dat is by design.
Mag je de nakijkrobot hacken?#
De ‘nakijkrobot’ kan tegen een stootje.
Het is toegestaan te proberen de robot dingen te laten doen die niet de bedoeling zijn.
Hij zou alleen queries voor selectie moeten doorlaten; dus geslaagd hacken is:
je kunt gegevens updaten
je kunt een tabel aanpassen / aanmaken / droppen
Voorwaarden voor hacken#
Hackpogingen mogen niet onnodig verstorend zijn voor mede-leerlingen.
Hacken mag daarom tot 3 weken voor de deadline.
Denk je een hack te hebben gevonden, meldt het zo snel mogelijk aan de docent via teams.
Hacken != DoSsen. Dus onnodig bestoken met grote hoeveelheden queries of onzinnige / onzinnig veel input is niet toegestaan.
Alles wat je doet met de robot wordt gelogd.
Als hij zijn normale ding niet meer doet als gevolg van jouw actie (geslaagde hack of niet), meldt je het onmiddelijk aan de docent via teams.
Bronvermelding#
Deze opdrachten zijn overgenomen van https://sql.informaticavo.nl/index.html.
LET OP: ik heb de opgaves soms aangepast ten opzichte van het origineel, want:
Heel veel opgaven hadden afwijkende formaten voor bedragen of andere zaken zoals afrondingen en dergelijke. Dat is vaak niet de essentie van de sectie waar de query over gaat, dus veel van die eisen zijn weggelaten.
Datum-opgaven zijn in de oorspronkelijke opgaves in het Nederlands gesteld, met bijvoorbeeld Nederlandstalige dagen en maanden. Dat heb ik aangepast naar Engels, de taal waarin de database bij mijn nakijkrobot staat ingesteld.
Soms was de sortering ambigu, dus dan kon het meerdere verschillende volgordes opleveren, die zijn nu aangepast dat ze altijd een unieke volgorde opleveren.
In een enkel geval waren de kolommen in het voorbeeld andersom dan in de vraag stond, dat is rechtgezet.