Κεφάλαιο 9 Συναθροίσεις Σύνοψη Στο παρόν κεφάλαιο θα παρουσιαστούν ερωτήματα συνάθροισης χρησιμοποιώντας τις βασικές συναρτήσεις MAX, MIN, AVG, SUM και COUNT. Θα παρουσιαστεί η χρήση της ομαδοποίησης εγγραφών με την εντολή GROUP BY και της επιλογής ομάδων με την εντολή HAVING. Τέλος θα γίνει εκτενέστερη αναφορά της εντολής ταξινόμησης αποτελεσμάτων ORDER BY. Προαπαιτούμενη γνώση Προαπαιτούμενα για την κατανόηση των εννοιών αλλά και την εργαστηριακή άσκηση είναι τα ακόλουθα: Η ύλη του Κεφ. 8. 9.1 Εισαγωγικές Έννοιες Στη συνέχεια θα παρουσιαστεί μία σύνοψη του τρόπου σύνταξης ερωτημάτων συνάθροισης (aggregation queries). Στα ερωτήματα-παραδείγματα που θα δοθούν θα χρησιμοποιηθούν οι παρακάτω πίνακες με τις αντίστοιχες εγγραφές τους. Customer cid afm address name sname dateOfBirth 1 077783234 56 Baltetsiou st. Kostas Kostantinou 1990-10-30 2 175783239 107 Diakou st. Eleni Kostantinou 1985-11-02 3 095111139 12 Rodon st. Maria Papantoniou 1967-03-20 Phones cid pnum 1 2231011111 1 6944444444 2 2103333333 Account accid balance dateOfCreation 100 10000 2014-01-01 200 40000 2013-02-01 300 30000 2005-03-10 400 20000 2005-03-10 Owns cid accid 1 100 2 200 1 300 1 400
13
Embed
εφάλαιο 9 υναθροίσεις · Η ύλη του Κεφ. 8. 9.1 ισαγωγικές Έννοιες ... παρακάτω πίνακες με τις αντίστοιχες
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Κεφάλαιο 9 Συναθροίσεις
Σύνοψη
Στο παρόν κεφάλαιο θα παρουσιαστούν ερωτήματα συνάθροισης χρησιμοποιώντας τις βασικές
συναρτήσεις MAX, MIN, AVG, SUM και COUNT. Θα παρουσιαστεί η χρήση της ομαδοποίησης
εγγραφών με την εντολή GROUP BY και της επιλογής ομάδων με την εντολή HAVING. Τέλος θα
γίνει εκτενέστερη αναφορά της εντολής ταξινόμησης αποτελεσμάτων ORDER BY.
Προαπαιτούμενη γνώση
Προαπαιτούμενα για την κατανόηση των εννοιών αλλά και την εργαστηριακή άσκηση είναι τα
ακόλουθα:
Η ύλη του Κεφ. 8.
9.1 Εισαγωγικές Έννοιες
Στη συνέχεια θα παρουσιαστεί μία σύνοψη του τρόπου σύνταξης ερωτημάτων συνάθροισης
(aggregation queries). Στα ερωτήματα-παραδείγματα που θα δοθούν θα χρησιμοποιηθούν οι
παρακάτω πίνακες με τις αντίστοιχες εγγραφές τους.
Customer
cid afm address name sname dateOfBirth
1 077783234 56 Baltetsiou st. Kostas Kostantinou 1990-10-30
2 175783239 107 Diakou st. Eleni Kostantinou 1985-11-02
3 095111139 12 Rodon st. Maria Papantoniou 1967-03-20
Phones
cid pnum
1 2231011111
1 6944444444
2 2103333333
Account
accid balance dateOfCreation
100 10000 2014-01-01
200 40000 2013-02-01
300 30000 2005-03-10
400 20000 2005-03-10
Owns
cid accid
1 100
2 200
1 300
1 400
Action
accid actid amount type dateOfAction
100 1 500 2 2014-01-14
200 1 500 2 2014-01-14
200 2 1000 2 2015-11-11
200 3 2000 1 2015-12-11
300 1 1000 2 2015-11-11
300 2 500 1 2015-12-11
Transfer
accidSource actidSource accidDest actidDest
200 1 100 1
300 1 200 2
9.1.1 Συναρτήσεις συνάθροισης
Όλες οι συναρτήσεις συνάθροισης χρησιμοποιούνται στο SELECT τμήμα ενός ερωτήματος.
Παίρνουν ως όρισμα μία έκφραση και επιστρέφουν ως αποτέλεσμα μία τιμή. Η τιμή αυτή
υπολογίζεται ως εξής: υπολογίζεται πρώτα η τιμή της έκφρασης για κάθε γραμμή του πίνακα
και στη συνέχεια εφαρμόζεται η συνάρτηση που περιγράφεται για το σύνολο των τιμών που
υπολογίστηκαν. Αν σε κάποια γραμμή η έκφραση αποτιμείται σε NULL, η συγκεκριμένη
γραμμή δε μετέχει στον υπολογισμό.
Οι βασικές συναρτήσεις συνάθροισης αριθμητικών τιμών στην SQL είναι οι εξής:
SUM(έκφραση): επιστρέφει το άθροισμα.
AVG(έκφραση): επιστρέφει το μέσο όρο.
MAX(έκφραση): επιστρέφει τη μέγιστη τιμή.
MIN(έκφραση): επιστρέφει την ελάχιστη τιμή.
STDDEV_POP(έκφραση): επιστρέφει την τυπική απόκλιση.
COUNT(έκφραση): επιστρέφει το πλήθος γραμμών.
Ακολουθούν παραδείγματα. Για περισσότερες πληροφορίες αλλά και πλήρη κατάλογο των
υποστηριζόμενων από τη MySQL συναρτήσεων, ο αναγνώστης μπορεί να απευθυνθεί στο
Κεφ.12.20.1 του εγχειριδίου της MySQL5.7.
Ερώτημα 1. Βρες το άθροισμα, το μέσο όρο, την τυπική απόκλιση, το μεγαλύτερο και το
μικρότερο ποσό χρημάτων στους λογαριασμούς.
SELECT SUM(balance) AS sum, AVG(balance) AS avg, STDDEV_POP(balance) AS stddev,
MAX(balance) AS max, MIN(balance) AS min
FROM Account;
Επιστρέφει:
sum avg stddev max min
100000 25000 11180.339887498949 40000 10000
Ερώτημα 2. Βρες το πλήθος των εγγραφών στον Customer για τις οποίες υπάρχουν διευθύνσεις.