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

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 14

Βάσεις Δεδομένων

ΣΥΝΑΘΡΟΙΣΤΙΚΕΣ
ΣΥΝΑΡΤΗΣΕΙΣ

1 31/05/2024
Συναθροιστικές Συναρτήσεις

Χρησιμοποιούνται για να κάνουν περίληψη


πολλών πλειάδων σε μια ομαδοποίηση.
Πριν την περίληψη, διαμερισμός των πλειάδων
Η SQL έχει 5 ενσωματωμένες (built-in)
συναθροιστικές συναρτήσεις:
Oι συναρτήσεις
Μέσος όρος: AVG(A)
(μόνο σε αριθμούς – To A είναι γνώρισμα) συνάθροισης
Ελάχιστο: MIN(A) δέχονται τον τελεστή
Μέγιστο: MAX(A) DISTINCT και στο
Άθροισμα: SUM(A) (μόνο σε αριθμούς) όρισμά τους.
Πλήθος: COUNT(A)

Οι συναρτήσεις μπορούν να χρησιμοποιηθούν


στο SELECT ή στο HAVING (νέα εντολή)
Οι τιμές NULL αγνοούνται όταν οι συναρτήσεις
συνάθροισης εφαρμόζονται σε κάποια στήλη
2 31/05/2024
Συναθροιστικές Συναρτήσεις – Στην Πράξη

Λογαριασμός Όνομα-Υποκαταστήματος Αριθμός-Λογαριασμού Ποσό

Υποκατάστημα Όνομα-Υποκαταστήματος Πόλη Σύνολο

Δάνειο Όνομα-Υποκαταστήματος Αριθμός-Δανείου Ποσό

Δανειζόμενος Όνομα-Πελάτη Αριθμός-Δανείου

Πελάτης Όνομα-Πελάτη Οδός Πόλη

Όνομα-Πελάτη Αριθμός-Λογαριασμού
Καταθέτης

3 31/05/2024
Συναθροιστικές Συναρτήσεις – Μέσος Όρος (AVG)

Παράδειγμα: Ποιο είναι το μέσο ποσό όλων των λογαριασμών


στο υποκατάστημα Ρήγα Φεραίου;
SELECT AVG(Ποσό)
FROM Λογαριασμός
WHERE Όνομα-Υποκαταστήματος = 'Ρήγα Φεραίου'

Το αποτέλεσμα είναι μια σχέση με ένα γνώρισμα και μια γραμμή.


Μπορούμε να δώσουμε όνομα στο γνώρισμα χρησιμοποιώντας
το AS.
Λογαριασμός(Όνομα-Υποκαταστήματος, Αριθμός-Λογαριασμού, Ποσό)
Υποκατάστημα (Όνομα-Υποκαταστήματος, Πόλη, Σύνολο)
Δάνειο(Όνομα-Υποκαταστήματος, Αριθμός-Δανείου, Ποσό)
Δανειζόμενος(Όνομα-Πελάτη, Αριθμός-Δανείου)
Πελάτης(Όνομα-Πελάτη, Οδός, Πόλη)
Καταθέτης(Όνομα-Πελάτη, Αριθμός-Λογαριασμού)

4 31/05/2024
Συναθροιστικές Συναρτήσεις – Μέγιστο (MAX)

Παράδειγμα: Ποιος είναι ο αριθμός λογαριασμού που


έχει το μέγιστο ποσό στο υποκατάστημα Ρήγα Φεραίου;
SELECT Αριθμός-Λογαριασμού, MAX(Ποσό)
FROM Λογαριασμός
WHERE Όνομα-Υποκαταστήματος = Είναι σωστό;;;
'Ρήγα Φεραίου'

Αν το SELECT περιέχει συναθροιστική συνάρτηση,


τότε έχουμε μόνο συναθροιστικές στο σημείο αυτό,
εκτός αν υπάρχει GROUP BY.
Λογαριασμός(Όνομα-Υποκαταστήματος, Αριθμός-Λογαριασμού, Ποσό)
Υποκατάστημα (Όνομα-Υποκαταστήματος, Πόλη, Σύνολο)
Δάνειο(Όνομα-Υποκαταστήματος, Αριθμός-Δανείου, Ποσό)
Δανειζόμενος(Όνομα-Πελάτη, Αριθμός-Δανείου)
Πελάτης(Όνομα-Πελάτη, Οδός, Πόλη)
Καταθέτης(Όνομα-Πελάτη, Αριθμός-Λογαριασμού)

5 31/05/2024
Συναθροιστικές Συναρτήσεις – COUNT

Για να μετρήσουμε πόσες πλειάδες έχει μία σχέση


κάνουμε το ακόλουθο:

SELECT COUNT(*)
FROM Πελάτης

Δε μπορούμε να χρησιμοποιήσουμε το DISTINCT με το


COUNT(*).

6 31/05/2024
Ομαδοποίηση: GROUP BY και HAVING

Διαμερίζουμε τη σχέση σε υποσύνολα πλειάδων


με βάση γνωρίσματα ομαδοποίησης
εφαρμόζουμε τη συνάρτηση συνάθροισης σε κάθε ομάδα
ανεξάρτητα

Η εντολή GROUP BY
καθορίζει τα γνωρίσματα ομαδοποίησης
Αν υπάρχουν ΝULL τιμές στο γνώρισμα
ομαδοποίησης
όλες οι πλειάδες με NULL φτιάχνουν χωριστή ομάδα
HAVING: Επιτρέπει παροχή συνθήκης στην
περιληπτική πληροφορία
7 31/05/2024
Συναθροιστικές Συναρτήσεις – GROUP BY

Άρα μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι μόνο σε ένα


σύνολο από πλειάδες, αλλά σε ομάδες από σύνολα πλειάδων.
Οι ομάδες προσδιορίζονται χρησιμοποιώντας το GROUP BY.

Παράδειγμα: Ποιος είναι το μέσο ποσό των λογαριασμών σε


κάθε υποκατάστημα;
SELECT Όνομα-Υποκαταστήματος, AVG(Ποσό)
FROM Λογαριασμός
GROUP BY Όνομα-Υποκαταστήματος
Λογαριασμός(Όνομα-Υποκαταστήματος, Αριθμός-Λογαριασμού, Ποσό)
Υποκατάστημα (Όνομα-Υποκαταστήματος, Πόλη, Σύνολο)
Δάνειο(Όνομα-Υποκαταστήματος, Αριθμός-Δανείου, Ποσό)
Δανειζόμενος(Όνομα-Πελάτη, Αριθμός-Δανείου)
Πελάτης(Όνομα-Πελάτη, Οδός, Πόλη)
Καταθέτης(Όνομα-Πελάτη, Αριθμός-Λογαριασμού)
8 31/05/2024
Συναθροιστικές Συναρτήσεις – GROUP BY

Η ομαδοποίηση μπορεί να γίνει ως προς περισσότερα του


ενός πεδία.

Παράδειγμα: Ποιος είναι o μέσος όρος καταθέσεων ανά πελάτη και


ανά υποκατάστημα;
SELECT Όνομα-Υποκαταστήματος, Όνομα-Πελάτη, AVG(balance)
FROM Καταθέτης, Λογαριασμός
WHERE Καταθέτης.Αριθμός-Λογαριασμού = Λογαριασμός.
Αριθμός-Λογαριασμού
GROUP BY Όνομα-Υποκαταστήματος, Όνομα-Πελάτη
Η ομαδοποίηση γίνεται πρώτα ως προς το Όνομα-Υποκαταστήματος.
Στη συνέχεια δημιουργούνται υποoμάδες ως προς το Όνομα-Πελάτη.
Λογαριασμός(Όνομα-Υποκαταστήματος, Αριθμός-Λογαριασμού, Ποσό)
Υποκατάστημα (Όνομα-Υποκαταστήματος, Πόλη, Σύνολο)
Δάνειο(Όνομα-Υποκαταστήματος, Αριθμός-Δανείου, Ποσό)
Δανειζόμενος(Όνομα-Πελάτη, Αριθμός-Δανείου)
Πελάτης(Όνομα-Πελάτη, Οδός, Πόλη)
Καταθέτης(Όνομα-Πελάτη, Αριθμός-Λογαριασμού) 9 31/05/2024
Συναθροιστικές Συναρτήσεις – COUNT DISTINCT

Αν θέλουμε να απαλείψουμε διπλές εμφανίσεις χρησιμοποιούμε


τη λέξη-κλειδί DISTINCT στην αντίστοιχη έκφραση.
Παράδειγμα: Ποιος είναι o αριθμός των καταθετών σε κάθε
υποκατάστημα;
SELECT Όνομα-Υποκαταστήματος, COUNT(DISTINCT
Όνομα-Πελάτη)
FROM Καταθέτης, Λογαριασμός
WHERE Καταθέτης.Αριθμός-Λογαριασμού = Λογαριασμός.
Αριθμός-Λογαριασμού
GROUP BY Όνομα-Υποκαταστήματος
Λογαριασμός(Όνομα-Υποκαταστήματος, Αριθμός-Λογαριασμού, Ποσό)
Υποκατάστημα (Όνομα-Υποκαταστήματος, Πόλη, Σύνολο)
Δάνειο(Όνομα-Υποκαταστήματος, Αριθμός-Δανείου, Ποσό)
Δανειζόμενος(Όνομα-Πελάτη, Αριθμός-Δανείου)
Πελάτης(Όνομα-Πελάτη, Οδός, Πόλη)
Καταθέτης(Όνομα-Πελάτη, Αριθμός-Λογαριασμού)
10 31/05/2024
Συναθροιστικές Συναρτήσεις – HAVING

Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια συγκεκριμένη ομάδα


από πλειάδες χρησιμοποιώντας το HAVING.

Παράδειγμα: Ποια είναι τα ονόματα υποκαταστημάτων με μέσο ποσό


καταθέσεων μεγαλύτερο των 1200€;
SELECT Όνομα-Υποκαταστήματος, AVG(Ποσό)
FROM Λογαριασμός
GROUP BY Όνομα-Υποκαταστήματος
HAVING AVG(Ποσό) > 1200

Η συνθήκη του HAVING εφαρμόζεται αφού σχηματιστούν οι ομάδες


και υπολογιστούν οι συναθροιστικές συναρτήσεις.
Λογαριασμός(Όνομα-Υποκαταστήματος, Αριθμός-Λογαριασμού, Ποσό)
Υποκατάστημα (Όνομα-Υποκαταστήματος, Πόλη, Σύνολο)
Δάνειο(Όνομα-Υποκαταστήματος, Αριθμός-Δανείου, Ποσό)
Δανειζόμενος(Όνομα-Πελάτη, Αριθμός-Δανείου)
Πελάτης(Όνομα-Πελάτη, Οδός, Πόλη)
Καταθέτης(Όνομα-Πελάτη, Αριθμός-Λογαριασμού) 11 31/05/2024
Συναθροιστικές Συναρτήσεις – HAVING

Όταν εμφανίζονται και το WHERE και το


HAVING:
η συνθήκη του WHERE εφαρμόζεται πρώτα,
οι πλειάδες που ικανοποιούν αυτή τη συνθήκη
τοποθετούνται σε ομάδες με βάση το GROUP BY,
και μετά αν υπάρχει συνθήκη στο HAVING
εφαρμόζεται στις ομάδες.

12 31/05/2024
Συναθροιστικές Συναρτήσεις – HAVING

Παράδειγμα: Ποιο είναι το μέσο ποσό για κάθε πελάτη που


ζει στα Ιωάννινα και έχει τουλάχιστον τρεις λογαριασμούς;
3
SELECT Καταθέτης.Όνομα-Πελάτη, AVG(Λογαριασμός.Ποσό)
FROM Καταθέτης, Λογαριασμός, Πελάτης
1 WHERE Καταθέτης.Αριθμός-Λογαριασμού =
Λογαριασμός.Αριθμός-Λογαριασμού AND Καταθέτης.Όνομα-
Πελάτη = Πελάτης.Όνομα-Πελάτη AND Πόλη = 'Ιωάννινα'
2 GROUP BY Καταθέτης.Όνομα-Πελάτη
4 HAVING COUNT (Καταθέτης.Αριθμός-Λογαριασμού)>=3

Λογαριασμός(Όνομα-Υποκαταστήματος, Αριθμός-Λογαριασμού, Ποσό)


Υποκατάστημα (Όνομα-Υποκαταστήματος, Πόλη, Σύνολο)
Δάνειο(Όνομα-Υποκαταστήματος, Αριθμός-Δανείου, Ποσό)
Δανειζόμενος(Όνομα-Πελάτη, Αριθμός-Δανείου)
Πελάτης(Όνομα-Πελάτη, Οδός, Πόλη)
Καταθέτης(Όνομα-Πελάτη, Αριθμός-Λογαριασμού)

13 31/05/2024
Συναθροιστικές Συναρτήσεις – Συγκεντρωτικά

Μέσος όρος: AVG (μόνο σε αριθμούς)


Ελάχιστο: MIN
Μέγιστο: MAX
Άθροισμα: SUM (μόνο σε αριθμούς)
Πλήθος: COUNT

Αν θέλουμε να απαλείψουμε διπλές εμφανίσεις χρησιμοποιούμε τη


λέξη-κλειδί DISTINCT στην αντίστοιχη έκφραση.
Μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι μόνο σε ένα
σύνολο από πλειάδες, αλλά σε ομάδες από σύνολα πλειάδων. Οι
ομάδες προσδιορίζονται χρησιμοποιώντας το GROUP BY.
Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια συγκεκριμένη
ομάδα από πλειάδες χρησιμοποιώντας το HAVING. Η συνθήκη
του HAVING εφαρμόζεται αφού σχηματιστούν οι ομάδες και
υπολογιστούν οι συναθροιστικές συναρτήσεις.
14 31/05/2024

You might also like