4.2.6

4.2.6 Συναρτήσεις Συνάθροισης και Ομαδοποίησης
**Στόχοι / Προσδοκώμενα Αποτελέσματα** Ο μαθητής/τρια πρέπει να είναι ικανός/ή:
 * να χρησιμοποιεί τις βασικές συναθροιστικές συναρτήσεις στην παρουσίαση των δεδομένων αναζήτησης
 * να χρησιμοποιεί τη φράση group by για ομαδοποίηση των εγγραφών στα δεδομένα της αναζήτησης


 * Συναθροιστικές Συναρτήσεις**

Η SQL έχει 5 ενσωματωμένες συναθροιστικές συναρτήσεις. Οι ακόλουθες συναρτήσεις εφαρμόζονται στο σύνολο των τιμών μιας στήλης ενός πίνακα, και επιστρέφουν μία τιμή: Αυτές επιδρούν σε ομάδα εγγραφών (γραμμών) του πίνακα και είναι:


 * ~ Συναρτήσεις ||~ Ερμηνεία||
 * AVG (Α)	||	Μέσος όρος τιμών (μόνο σε αριθμούς)||
 * COUNT(Α) || 	Πλήθος τιμών||
 * MAX (Α) ||	Μέγιστη τιμή||
 * MIN (Α) ||	Ελάχιστη τιμή||
 * SUM (Α)	|| Άθροισμα τιμών (μόνο σε αριθμούς)||
 * (Α): αποτελεί τη στήλη || Όλες οι συναρτήσεις αγνοούν τις τιμές NULL εκτός από την COUNT(*).||


 * ΠΑΡΑΔΕΙΓΜΑΤΑ**:

code format="sql" Select Όνομα_Μαθήματος, AVG(Βαθμός) From ΓραπτόςΒαθμόςΜαθητή Where Όνομα_Μαθήματος='Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο' code

Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα_Μαθήματος και το Μέσο Όρο του βαθμού από τον πίνακα ΓραπτόςΒαθμόςΜαθητή, για το μάθημα Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο

code format="sql" Select Όνομα_Μαθήματος, min(Βαθμός) From ΓραπτόςΒαθμόςΜαθητή Where Όνομα_Μαθήματος='Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο' code

Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα_Μαθήματος και το Μικρότερο βαθμό από τον πίνακα ΓραπτόςΒαθμόςΜαθητή, για την για το μάθημα Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο

code format="sql" Select Όνομα_Μαθήματος, count(*) From ΓραπτόςΒαθμόςΜαθητή Where Όνομα_Μαθήματος='Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο' and Βαθμός<10 code

Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα_Μαθήματος και το Πλήθος των μαθητών από τον πίνακα ΓραπτόςΒαθμόςΜαθητή, για το μάθημα Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο που ο βαθμός τους είναι μικρότερος από 10 Μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι μόνο σε ένα σύνολο από εγγραφές, αλλά σε ομάδες από σύνολα εγγραφών. Οι ομάδες προσδιορίζονται χρησιμοποιώντας το group by και οι εγγραφές μιας ομάδας περιέχουν την ίδια τιμή σε κάποιο δεδομένο πεδίο. Η φράση αυτή μπαίνει ΠΑΝΤΑ στο τέλος του ερωτήματος.
 * Η φράση GROUP BY**

code format="sql" Select Τάξη, count(*) From ΕγγραφήΜαθητή Group by Τάξη code
 * ΠΑΡΑΔΕΙΓΜΑΤΑ**

Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Τάξη και το Πλήθος των μαθητών, ανά τάξη από τον πίνακα ΕγγραφήΜαθητή

code format="sql" Select Τάξη, count(*) From ΕγγραφήΜαθητή Where Σχολ_έτος='2014-2015' Group by Τάξη code

Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Τάξη και το Πλήθος των μαθητών, ανά τάξη από τον πίνακα ΕγγραφήΜαθητή, για το Σχολικό έτος είναι 2014-2015

code format="sql" Select Τάξη, count(*) From ΕγγραφήΜαθητή Where Τάξη<>'Α' and Σχολ_έτος='2014-2015' Group by Τάξη code

Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Τάξη και το Πλήθος των μαθητών, ανά τάξη, εκτός της Α, για το Σχολικό έτος είναι 2014-2015, από τον πίνακα ΕγγραφήΜαθητή. Η φράση where, αποκλείει ομάδες.

Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια συγκεκριμένη ομάδα από εγγραφές χρησιμοποιώντας το having. Η συνθήκη στην φράση having εφαρμόζεται αφού σχηματιστούν οι ομάδες (group by) και υπολογιστούν οι συναθροιστικές συναρτήσεις. code format="sql" Select Όνομα_Μαθήματος, AVG(Βαθμός) From ΓραπτόςΒαθμόςΜαθητή Group by Όνομα_Μαθήματος Having AVG(Βαθμός)>15 code
 * Η Φράση HAVING**
 * ΠΑΡΑΔΕΙΓΜΑΤΑ**

Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα_Μαθήματος και το μέσο όρο του βαθμού, ανά μάθημα από τον πίνακα ΓραπτόςΒαθμόςΜαθητή για τα μαθήματα που ο βαθμός τους είναι μεγαλύτερος από 15

code format="sql" Select Τάξη, Σχολ_έτος, AVG(Βαθμός) From ΓραπτόςΒαθμόςΜαθητή, ΕγγραφήΜαθητή Where ΓραπτόςΒαθμόςΜαθητή.ΑΜ=ΕγγραφήΜαθητή.ΑΜ Group by Τάξη, Σχολ_έτος Having AVG(Βαθμός)>15 code

Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Τάξη, Σχολικό έτος και το μέσο όρο του βαθμού, ανά τάξη και Σχολικό έτος, από τους πίνακες ΓραπτόςΒαθμόςΜαθητή, ΕγγραφήΜαθητή για τα μαθήματα που ο βαθμός τους είναι μεγαλύτερος από 15


 * [[Image:MySQL SELECT ΓραπτόςΒαθμόςΜαθητή LT 10.png width="500"]] || [[Image:MySQL SELECT ΕγγραφήΜαθητή COUNT.png width="500"]] ||
 * Εικόνα 4.2.6.1 Χρήση της συνάρτησης count για το πλήθος των εγγραφών || Εικόνα 4.2.6.2 Χρήση της συνάρτησης count  για το πλήθος των εγγραφών, ανά τάξη ||

**Ερωτήσεις/ Δραστηριότητες** 1. Προσδιορίστε και αναπτύξτε τις αντίστοιχες εντολές select, ώστε να απαντηθούν τα ερωτήματα:
 * Πόσα αγόρια και πόσα κορίτσια φοιτούν το σχολικό έτος 2014-2015 στην Α τάξη; (χρησιμοποιήστε ψευδώνυμο στήλης για την παρουσίαση των αποτελεσμάτων)
 * Πόσοι μαθητές δεν έχουν γραπτό βαθμό στο μάθημα Συστήματα Διαχείρισης Βάσεων Δεδομένων και Εφαρμογές στο Διαδίκτυο το σχολικό έτος 2014-2015; (χρησιμοποιήστε ψευδώνυμο στήλης για την παρουσίαση των αποτελεσμάτων)
 * Ποιος είναι ο Μέσος Όρος των γραπτών βαθμών ανά μάθημα το σχολικό έτος 2014-2015; (χρησιμοποιήστε ψευδώνυμο στήλης για την παρουσίαση των αποτελεσμάτων)


 * Δραστηριότητα Κεφαλαίου 4**

Ο μαθητής/τρια πρέπει να είναι ικανός/ή:
 * Στόχοι / Προσδοκώμενα Αποτελέσματα**
 * να εφαρμόζει τις γνώσεις που έχει ήδη αποκτήσει, σε ένα νέο πρόβλημα
 * να επεκτείνει την λύση προβλημάτων που έχει ήδη αντιμετωπίσει
 * να λαμβάνει αποφάσεις σχετικά με την υλοποίηση και διαχείριση Βάσεων Δεδομένων για συγκεκριμένα προβλήματα

Η βάση δεδομένων του μαθητολογίου πρέπει να συμπληρωθεί με τα στοιχεία των καθηγητών και την ανάθεση μαθημάτων σε αυτούς. Γι’ αυτό το λόγο πρέπει στην βάση δεδομένων να γίνουν οι εξής ενέργειες: 1.	Εισαγωγές περισσότερων μαθημάτων που διδάσκονται στο συγκεκριμένο σχολείο. 2.	Δημιουργία πίνακα για την αποθήκευση των στοιχείων των καθηγητών όπως Επώνυμο, Όνομα και Ειδικότητα. Σημείωση: προτείνεται να δημιουργηθεί κύριο κλειδί που θα είναι αριθμός. 3.	Εισαγωγές δεδομένων στον πίνακα με τα στοιχεία των καθηγητών. 4.	Δημιουργία του πίνακα Αναθέσεις όπου θα καταγράφονται τα μαθήματα που ανατίθενται σε κάθε καθηγητή. Ο πίνακας αυτός πρέπει να συσχετίζει τα στοιχεία των καθηγητών με τα στοιχεία των μαθημάτων. Σημείωση: προτείνεται να γίνει η απλουστευτική θεώρηση ότι κάθε μάθημα το αναλαμβάνει μόνο ένας καθηγητής σε όλα τα τμήματα. 5.	Εισαγωγές δεδομένων στον πίνακα Αναθέσεις.

Επιπλέον είναι αναγκαίο να υλοποιηθούν τα παρακάτω ερωτήματα που θα διατεθούν στους χρήστες του συστήματος: 6.	Ανάκτηση όλων των αναθέσεων μαθημάτων.