Hoi,

Ik heb van school (havo 5) oefening gekregen voor SQL, nu kom ik niet uit opdracht 5 13 en 14. Als ik 13 en 14 heb kan ik zelf 15 wel doen denk ik. Kan iemand mij hierbij helpen?

Dit zijn de vragen

Oefen-vragen bij SQL
1. De basisstructuur van een eenvoudige SQL-query bestaat uit:
SELECT …………
FROM …………
WHERE …………
Leg in je eigen woorden uit wat voor soort gegevens er op de stippellijntjes ingevuld moeten worden.
2. Geef bij de tabel klas (hiernaast) het SELECT statement zodat je van iedere leerling de naam en de hobby selecteert.
3. Gebruik dezelfde tabel om enkel de leerlingen met als hobby korfbal te selecteren.
4. Beschrijf de effecten van het gebruik van de statements GROUP BY en ORDER BY.
5. Geef het statement waarmee je een lijst krijgt van de sporten die meer dan 2 keer voorkomen.
6. Beschrijf de werking van de volgende SQL-functies:
a. COUNT(attribuut)
b. SUM(attribuut)
c. AVG(attribuut)
d. MAX(attribuut)
e. MIN(attribuut)

7. Geef het statement waarmee de Leerlingen in een lijst komen die zowel op P1 als PO een 7 of hoger haalden. En zet de namen in alfabetische volgorde.
8. Geef het statement waarmee voor deze klas de gemiddelden op P1 en P0 in beeld komen.
9. Geef het statement waarmee de hoogste score voor P1 en P0 (afzonderlijk) in beeld komt.
10. Wat doet PRIMARY KEY AUTOINCREMENT ?
11. Selecteer op (“dans”, “zwemmen”, “schaken”) m.b.v. een SELECT IN statement
In de tabel GROEPEN wordt van de leerlingen bijgehouden in welke groep ze zitten:
12. Wat is het SELECT statement waarmee je uit deze tabel de ll_ID kunt filteren van alle H3 groepsleden?

13. Gebruik het SELECT statement van opgave 12 om de namen van de leerlingen uit de klas H3 hiermee in beeld te krijgen..
De structuur van de opdracht wordt dus
SELECT … FROM … WHERE … IN ( SELECT … FROM … WHERE…)

14. Gebruik een JOIN om de tabel GROEPEN te koppelen met de tabel klas.
Creëer nu een lijst met de namen van leerlingen uit groep H2.
De structuur van de opdracht wordt dus
SELECT … FROM … WHERE … JOIN … ON
15. Schrijf het statement waarmee je de gemiddelden voor het P0 per groep (H1,H2,H3) in beeld krijgt.


Hierbij mijn antwoorden tot nu toe

/* Het maken van de databases */
CREATE TABLE klas (id INTEGER, naam TEXT, P1 REAL, P0 REAL, Hobby TEXT ) ;
INSERT INTO klas VALUES ( 133944, "Jeroen" ,6.5,6.00,"zwemmen" );
INSERT INTO klas VALUES ( 134131,"Thomas" ,8.0,6.00,"rugby" );
INSERT INTO klas VALUES ( 128081,"Pascal" ,6.0,6.50,"schaken" );
INSERT INTO klas VALUES ( 133838, "Jitka" ,7.5,6.50,"gamen" );
INSERT INTO klas VALUES ( 133783, "Chantal" ,7.3,6.50,"fietsen" );
INSERT INTO klas VALUES ( 133774, "Jan" ,9.5,9.50,"korfbal" );
INSERT INTO klas VALUES ( 128261, "Wietse" ,6.5,7.30,"gamen" );
INSERT INTO klas VALUES ( 133759, "Lisanne" ,6.5,7.30,"korfbal" );
INSERT INTO klas VALUES ( 134296, "Martijn" ,6.0,6.00,"rugby" );
INSERT INTO klas VALUES ( 133901, "Koen" ,8.0,8.00,"racen" );
INSERT INTO klas VALUES ( 133815, "Marijn" ,6.5,6.50,"gamen" );
INSERT INTO klas VALUES ( 127597, "Sieuwert" ,6.0,7.30,"rugby" );
INSERT INTO klas VALUES ( 133797, "Henk" ,6.0,7.50,"schaatsen" );
INSERT INTO klas VALUES ( 133861, "Maike" ,6.5,6.50,"turnen" );
INSERT INTO klas VALUES ( 133826, "Arman" ,7.3,8.00,"dans" );
INSERT INTO klas VALUES ( 133779, "Milou" ,7.3,8.00,"zwemmen" );
INSERT INTO klas VALUES ( 133805, "Tom" ,8.0,6.50,"korfbal" );
INSERT INTO klas VALUES ( 133866, "Twan" ,8.0,8.00,"voetbal" );
INSERT INTO klas VALUES ( 128778, "Waalko" ,6.5,6.00,"voetbal" );
CREATE TABLE groepen (id TEXT,ll_ID INTEGER);
INSERT INTO groepen VALUES ("H1",127597);
INSERT INTO groepen VALUES ("H2",128081);
INSERT INTO groepen VALUES ("H3",128261);
INSERT INTO groepen VALUES ("H1",128778);
INSERT INTO groepen VALUES ("H2",133759);
INSERT INTO groepen VALUES ("H3",133774);
INSERT INTO groepen VALUES ("H2",133779);
INSERT INTO groepen VALUES ("H3",1337830);
INSERT INTO groepen VALUES ("H1",133797);
INSERT INTO groepen VALUES ("H2",133805);
INSERT INTO groepen VALUES ("H3",133815);
INSERT INTO groepen VALUES ("H2",133826);
INSERT INTO groepen VALUES ("H1",133838);
INSERT INTO groepen VALUES ("H2",133861);
INSERT INTO groepen VALUES ("H3",133866);
INSERT INTO groepen VALUES ("H3",133901);
INSERT INTO groepen VALUES ("H1",133944);
INSERT INTO groepen VALUES ("H2",134131);
INSERT INTO groepen VALUES ("H3",134296);

/* Opdracht 1
SELECT is om een data de selecteren
FROM is vanaf waar je het wilt halen
WHERE is dat iets moet voldoen aan een conditie */

/* Opdracht 2 */
SELECT naam, hobby FROM klas;

/* opdracht 3 */
SELECT naam, hobby FROM klas WHERE hobby = "korfbal";

/* Opdracht 4
Met GROUO BY kan je data in groepen opsplitsen met de zelfe waarde
Met ORDER BY kan je data in een "ranglijst" zetten */

/* Opdracht 5 */
SELECT hobby, COUNT(hobby) FROM klas GROUP BY hobby ORDER BY COUNT(hobby) DESC;


/* Opdracht 6
A. Dit geeft het aantal weer van een kolom of database
B. Dit telt alle waardes bij elkaar op
C. Dit rekent het gemiddelde uit van de rij of colom
D. DIt geeft het hoogste getal
E. Dit geeft het laagste getal */

/* Opdracht 7 */
SELECT naam FROM klas WHERE p1 > 7 AND P0 > 7 ORDER BY naam;

/* Opdracht 8 */
SELECT AVG(p1), AVG(p0) FROM klas;

/* Opdracht 9 */
SELECT MAX(p1) FROM klas;
SELECT MAX(p0) FROM klas;

/* Opdracht 10
Dit maakt een uniek nieuw nummer per als er een nieuwe invoer van data komt */

/* Opdracht 11 */
SELECT naam FROM klas WHERE hobby = "dans" OR hobby = "zwemmen" OR hobby ="schaken";

/* Opdracht 12 */
SELECT * FROM groepen WHERE ID = "H3";

/* Opdracht 13 */


/* Opdracht 14 */

https://www.khanacademy.org/computer-programming/sql-oefen-toets/5813887489966080

Ik weet dat het veel is maar ik hoop dat iemand tijd en zin heeft om mij te helpen :)
Coen
Opdracht 5: GROUP BY en HAVING als ik mij niet vergis.
Verder over de JOIN kan je een hoop lezen op internet. Alles voorkauwen doen we natuurlijk liever niet ;-)

Opdracht 11 klopt niet, en moet een SELECT IN() zijn
Opdracht 5 is gelukt, opdracht 11 is nu aangepast en als het goed is ook correct. Nu de laatste paar nog.
Dit is mijn beste antwoord voor 13...
SELECT LL_ID
FROM groepen
WHERE ID = "H3"
INNER JOIN klas on naam=naam;

Maar dit werkt ook niet. Ik snap niet wat ik fout doe.
misschien even de tabellen aangeven voor de velden: groepen.LL_ID en ook bij de INNER JOIN.
naam en naam? Het gaat om het vergelijken uit twee tabellen. Normaliter zou je een vergelijking op ID-nummer moeten doen, en niet op de naam.
Ik heb dit ervan gemaakt :

SELECT * FROM klas WHERE id IN ( SELECT ll_id FROM groepen WHERE id = 'h3')


En het antwoord op vraag 7 is dit :

SELECT naam FROM klas WHERE p1 >= 7 AND P0 >= 7 ORDER BY naam;


[size=xsmall]Toevoeging op 27/11/2018 12:50:46:[/size]

En misschien een rare vraag, maar kan de meester dit niet uitleggen?

De gast wordt er voor betaald door de belastingbetaler. Vraag maar aan je ouders als die weer klagen dat het schoolgeld omhoog gaat.

En weten je klasgenoten het niet? Jullie zijn toch zo whatsapp savvy.
Onze docent legt niet veel uit, wij hebben inderdaad ook wel een WhatsApp groep maar niemand weet hoe we deze laatste vragen moeten oplossen, vandaar dat ik het hier vraag. Het antwoord van u is niet correct omdat je niet de namen krijgt. Ik ga nu veder met de tips van hierboven
Welke query met INNER JOIN heb je nu dan?
De koppeling moet je bij de ID-nummers leggen.
Als ik

SELECT LL_ID, naam
FROM groepen
INNER JOIN klas on groepen.LL_ID=klas.ID

Zie ik de ID + naam maar zodra ik

SELECT LL_ID, naam
FROM groepen
WHERE ID = "H3";
INNER JOIN klas on groepen.LL_ID=klas.ID

Krijg ik een error, volgens mij ben ik op het goede pad maar mis ik iets waardoor de code niet klopt
Een punt-komma sluit je query af. Dat wil je niet vroegtijdig ;-)
Het is zelfs niet nodig, tenzij je meerdere sql-opdrachten achtereenvolgens uitvoert in een query.

Reageren