Γλώσσα SQL. Δημιουργία ερωτημάτων στη βάση δεδομένων

Πρόγραμμα Kerish Doctor. 07.07.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Πώς μπορώ να μάθω τον αριθμό των μοντέλων Η/Υ που παράγονται από έναν συγκεκριμένο προμηθευτή; Πώς να προσδιορίσετε τη μέση τιμή υπολογιστών με τα ίδια τεχνικά χαρακτηριστικά; Αυτές και πολλές άλλες ερωτήσεις που σχετίζονται με ορισμένες στατιστικές πληροφορίες μπορούν να απαντηθούν χρησιμοποιώντας τελικές (συγκεντρωτικές) συναρτήσεις. Το πρότυπο παρέχει τις ακόλουθες συγκεντρωτικές συναρτήσεις:

Όλες αυτές οι συναρτήσεις επιστρέφουν μία μόνο τιμή. Ταυτόχρονα, οι λειτουργίες COUNT, MINΚαι ΜΕΓισχύει για κάθε τύπο δεδομένων, ενώ ΠΟΣΟΚαι AVGχρησιμοποιούνται μόνο για αριθμητικά πεδία. Διαφορά μεταξύ λειτουργίας ΚΟΜΗΣ(*)Και ΚΟΜΗΣ(<имя поля>) είναι ότι η δεύτερη δεν λαμβάνει υπόψη τις τιμές NULL κατά τον υπολογισμό.

Παράδειγμα. Βρείτε την ελάχιστη και τη μέγιστη τιμή για προσωπικούς υπολογιστές:

Παράδειγμα. Βρείτε τον διαθέσιμο αριθμό υπολογιστών που παράγονται από τον κατασκευαστή Α:

Παράδειγμα. Εάν μας ενδιαφέρει ο αριθμός των διαφορετικών μοντέλων που παράγονται από τον κατασκευαστή Α, τότε το ερώτημα μπορεί να διατυπωθεί ως εξής (χρησιμοποιώντας το γεγονός ότι στον πίνακα Προϊόν κάθε μοντέλο καταγράφεται μία φορά):

Παράδειγμα. Βρείτε τον αριθμό των διαθέσιμων διαφορετικών μοντέλων που παράγονται από τον κατασκευαστή A. Το ερώτημα είναι παρόμοιο με το προηγούμενο, στο οποίο έπρεπε να προσδιοριστεί ο συνολικός αριθμός μοντέλων που παράγονται από τον κατασκευαστή A. Εδώ πρέπει επίσης να βρείτε τον αριθμό των διαφορετικών μοντέλων στο το τραπέζι υπολογιστή (δηλαδή, αυτά που είναι διαθέσιμα προς πώληση).

Για να διασφαλιστεί ότι χρησιμοποιούνται μόνο μοναδικές τιμές κατά τη λήψη στατιστικών δεικτών, όταν όρισμα συγκεντρωτικών συναρτήσεωνμπορεί να χρησιμοποιηθεί DISTINCT παράμετρος. Αλλος παράμετρος ALLείναι η προεπιλογή και προϋποθέτει ότι μετρώνται όλες οι επιστρεφόμενες τιμές στη στήλη. Χειριστής,

Εάν πρέπει να λάβουμε τον αριθμό των μοντέλων Η/Υ που παράγονται καθέναςκατασκευαστή, θα χρειαστεί να χρησιμοποιήσετε ΟΜΑΔΑ ΑΠΟ ρήτρα, ακολουθώντας συντακτικά μετά WHERE ρήτρες.

ΟΜΑΔΑ ΑΠΟ ρήτρα

ΟΜΑΔΑ ΑΝΑ ρήτραχρησιμοποιείται για τον καθορισμό ομάδων συμβολοσειρών εξόδου στις οποίες μπορούν να εφαρμοστούν συγκεντρωτικές συναρτήσεις (COUNT, MIN, MAX, AVG και SUM). Εάν λείπει αυτή η ρήτρα και χρησιμοποιούνται συγκεντρωτικές συναρτήσεις, τότε όλες οι στήλες με ονόματα που αναφέρονται ΕΠΙΛΕΓΩ, πρέπει να περιλαμβάνεται σε αθροιστικές συναρτήσεις, και αυτές οι συναρτήσεις θα εφαρμοστούν σε ολόκληρο το σύνολο σειρών που ικανοποιούν το κατηγόρημα του ερωτήματος. Διαφορετικά, όλες οι στήλες της λίστας SELECT δεν περιλαμβάνεταιπρέπει να καθοριστούν συνολικά οι συναρτήσεις στην ρήτρα GROUP BY. Ως αποτέλεσμα, όλες οι σειρές ερωτημάτων εξόδου χωρίζονται σε ομάδες που χαρακτηρίζονται από τους ίδιους συνδυασμούς τιμών σε αυτές τις στήλες.
Μετά από αυτό, θα εφαρμοστούν συγκεντρωτικές συναρτήσεις σε κάθε ομάδα. Λάβετε υπόψη ότι για το GROUP BY όλες οι NULL τιμές αντιμετωπίζονται ως ίσες, δηλ. κατά την ομαδοποίηση με ένα πεδίο που περιέχει τιμές NULL, όλες αυτές οι σειρές θα εμπίπτουν σε μία ομάδα. Ανεάν υπάρχει ρήτρα GROUP BY , στον όρο SELECTχωρίς συγκεντρωτικές συναρτήσεις
, τότε το ερώτημα θα επιστρέψει απλώς μια σειρά από κάθε ομάδα. Αυτή η δυνατότητα, μαζί με τη λέξη-κλειδί DISTINCT, μπορεί να χρησιμοποιηθεί για την εξάλειψη των διπλότυπων σειρών σε ένα σύνολο αποτελεσμάτων.
Ας δούμε ένα απλό παράδειγμα:
SELECT μοντέλο, COUNT(model) AS Qty_model, AVG(price) AS Avg_price
ΑΠΟ Η/Υ

GROUP BY μοντέλο?
Σε αυτό το αίτημα, για κάθε μοντέλο Η/Υ καθορίζεται ο αριθμός και το μέσο κόστος τους. Όλες οι σειρές με την ίδια τιμή μοντέλου σχηματίζουν μια ομάδα και η έξοδος του SELECT υπολογίζει τον αριθμό των τιμών και τις μέσες τιμές τιμής για κάθε ομάδα. Το αποτέλεσμα του ερωτήματος θα είναι ο παρακάτω πίνακας: μοντέλο Qty_model
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Μέση_τιμή

Εάν το SELECT είχε στήλη ημερομηνίας, τότε θα ήταν δυνατός ο υπολογισμός αυτών των δεικτών για κάθε συγκεκριμένη ημερομηνία. Για να το κάνετε αυτό, πρέπει να προσθέσετε την ημερομηνία ως στήλη ομαδοποίησης και, στη συνέχεια, θα υπολογιστούν οι συγκεντρωτικές συναρτήσεις για κάθε συνδυασμό τιμών (μοντέλο-ημερομηνία). Υπάρχουν αρκετά συγκεκριμένα:

  • κανόνες για την εκτέλεση συγκεντρωτικών λειτουργιών Εάν ως αποτέλεσμα του αιτήματοςδεν ελήφθησαν σειρές
  • (ή περισσότερες από μία σειρές για μια δεδομένη ομάδα), τότε δεν υπάρχουν δεδομένα πηγής για τον υπολογισμό οποιασδήποτε από τις συγκεντρωτικές συναρτήσεις. Σε αυτήν την περίπτωση, το αποτέλεσμα των COUNT συναρτήσεων θα είναι μηδέν και το αποτέλεσμα όλων των άλλων συναρτήσεων θα είναι NULL.Επιχείρημα αθροιστική συνάρτησηδεν μπορεί να περιέχει συγκεντρωτικές συναρτήσεις
  • (συνάρτηση από συνάρτηση). Εκείνοι. σε ένα ερώτημα είναι αδύνατο, ας πούμε, να ληφθεί το μέγιστο των μέσων τιμών. Το αποτέλεσμα της εκτέλεσης της συνάρτησης COUNT είναιακέραιος αριθμός
  • (ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ). Άλλες συγκεντρωτικές συναρτήσεις κληρονομούν τους τύπους δεδομένων των τιμών που επεξεργάζονται. Εάν η συνάρτηση SUM παράγει ένα αποτέλεσμα που είναι μεγαλύτερο από τη μέγιστη τιμή του χρησιμοποιούμενου τύπου δεδομένων,.

σφάλμα Έτσι, εάν το αίτημα δεν περιέχειΟΜΑΔΑ ΑΠΟ ρήτρες αθροιστικές συναρτήσεις, Αυτό περιλαμβάνεται σερήτρα SELECT ΟΜΑΔΑ ΑΠΟ ρήτρα, εκτελούνται σε όλες τις σειρές ερωτημάτων που προκύπτουν. Εάν το αίτημα περιέχει , κάθε σύνολο γραμμών που έχει τις ίδιες τιμές μιας στήλης ή μιας ομάδας στηλών που καθορίζονται σεΟΜΑΔΑ ΑΠΟ ρήτρα αθροιστικές συναρτήσειςεκτελούνται για κάθε ομάδα ξεχωριστά.

ΕΧΕΙ προσφορά

Μετά από αυτό, θα εφαρμοστούν συγκεντρωτικές συναρτήσεις σε κάθε ομάδα. Λάβετε υπόψη ότι για το GROUP BY όλες οι NULL τιμές αντιμετωπίζονται ως ίσες, δηλ. κατά την ομαδοποίηση με ένα πεδίο που περιέχει τιμές NULL, όλες αυτές οι σειρές θα εμπίπτουν σε μία ομάδα. ρήτρα WHEREορίζει ένα κατηγόρημα για το φιλτράρισμα σειρών, στη συνέχεια ΕΧΕΙ προσφοράισχύει μετά την ομαδοποίησηγια να ορίσετε ένα παρόμοιο κατηγόρημα που φιλτράρει ομάδες κατά τιμές αθροιστικές συναρτήσεις. Αυτή η ρήτρα είναι απαραίτητη για την επικύρωση των τιμών που λαμβάνονται χρησιμοποιώντας αθροιστική συνάρτησηόχι από μεμονωμένες σειρές της πηγής εγγραφής που ορίζεται στο Ρήτρα ΑΠΟ, και από ομάδες τέτοιων γραμμών. Επομένως, ένας τέτοιος έλεγχος δεν μπορεί να περιληφθεί ρήτρα WHERE.

Μπορεί να εκτελέσει γενικευμένη ομαδική επεξεργασία τιμών πεδίου. Αυτό γίνεται χρησιμοποιώντας συναρτήσεις συγκεντρωτικών στοιχείων. Οι συγκεντρωτικές συναρτήσεις παράγουν μια ενιαία τιμή για μια ολόκληρη ομάδα πίνακα. Η SQL παρέχει τις ακόλουθες συγκεντρωτικές συναρτήσεις:

  • ΚΟΜΗΣ– μετράει τον αριθμό των σειρών του πίνακα με μη NULL τιμές του πεδίου που καθορίζονται ως όρισμα.
  • ΠΟΣΟ– υπολογίζει το αριθμητικό άθροισμα όλων των επιλεγμένων τιμών για ένα δεδομένο πεδίο.
  • AVG– υπολογίζει κατά μέσο όρο όλες τις επιλεγμένες τιμές αυτού του πεδίου.
  • ΜΕΓ– εμφανίζει τη μεγαλύτερη τιμή από όλες τις επιλεγμένες τιμές για αυτό το πεδίο.
  • MIN– εμφανίζει τη μικρότερη τιμή από όλες τις επιλεγμένες τιμές για αυτό το πεδίο.

    Χρήση αθροιστικών συναρτήσεων

    Οι συγκεντρωτικές συναρτήσεις χρησιμοποιούνται παρόμοια με τα ονόματα πεδίων στον όρο SELECT ενός ερωτήματος, με μία εξαίρεση: λαμβάνουν ονόματα πεδίων ως όρισμα. Μόνο αριθμητικά πεδία μπορούν να χρησιμοποιηθούν με ΠΟΣΟΚαι AVG. ΜΕ ΚΟΜΗΣ, ΜΕΓ, Και MINΜπορούν να χρησιμοποιηθούν τόσο αριθμητικά όσο και πεδία χαρακτήρων. Όταν χρησιμοποιείται με πεδία χαρακτήρων ΜΕΓΚαι MINθα τα μεταφράσει στο αντίστοιχο ASCII. Αυτό σημαίνει ότι MINθα επιλέξει το πρώτο, και ΜΕΓτελευταία τιμή με αλφαβητική σειρά.

    Για να βρούμε το συνολικό ποσό πωλήσεων στον πίνακα πωλήσεων, πρέπει να γράψουμε το ακόλουθο ερώτημα:

    SELECT SUM(SSum) FROM Πωλήσεις

    Ως αποτέλεσμα παίρνουμε:

    Αυτό το ερώτημα μέτρησε τον αριθμό των μη κενών τιμών στο πεδίο SNum του πίνακα Πωλήσεις. Αν ξαναγράψουμε το ερώτημα ως εξής:

    SELECT COUNT(Ημερομηνία) FROM Πωλήσεις

    Ως αποτέλεσμα παίρνουμε:

    COUNT OF SD
    4

    Λαμβάνονται διαφορετικά αποτελέσματα ερωτήματος κατά τον υπολογισμό αυτού που φαίνεται να είναι το ίδιο πράγμα επειδή μία από τις τιμές του πεδίου SDate είναι κενή ( ΑΚΥΡΟΣ). Να είστε προσεκτικοί όταν χρησιμοποιείτε τέτοια ερωτήματα.

Το μάθημα θα καλύψει το θέμα της sql μετονομασίας στήλης (πεδίων) χρησιμοποιώντας τη λέξη υπηρεσίας AS. Καλύπτεται επίσης το θέμα των συναρτήσεων συγκεντρωτικών στοιχείων στην sql. Θα συζητηθούν συγκεκριμένα παραδείγματα αιτημάτων

Τα ονόματα στηλών στα ερωτήματα μπορούν να μετονομαστούν. Αυτό κάνει τα αποτελέσματα πιο ευανάγνωστα.

Στην SQL, η μετονομασία πεδίων περιλαμβάνει χρήση AS λέξη-κλειδί, το οποίο χρησιμοποιείται για τη μετονομασία ονομάτων πεδίων σε σύνολα αποτελεσμάτων

Σύνταξη:

ΕΠΙΛΕΓΩ<имя поля>ΩΣ<псевдоним>ΑΠΟ...

Ας δούμε ένα παράδειγμα μετονομασίας σε SQL:

Παράδειγμα βάσης δεδομένων «Ινστιτούτο»:Εμφανίστε τα ονόματα των εκπαιδευτικών και τους μισθούς τους, για όσους εκπαιδευτικούς με μισθό κάτω από 15.000, μετονομάστε το πεδίο zarplata σε "χαμηλός_μισθός"


✍ Λύση:

Η μετονομασία στηλών σε SQL είναι συχνά απαραίτητη κατά τον υπολογισμό τιμών που σχετίζονται με πολλαπλά πεδίατραπέζια. Ας δούμε ένα παράδειγμα:

Παράδειγμα βάσης δεδομένων «Ινστιτούτο»:Από τον πίνακα καθηγητών, εμφανίστε το πεδίο ονόματος και υπολογίστε το ποσό του μισθού και του μπόνους, ονομάζοντας το πεδίο "μισθός_μπόνους"


✍ Λύση:
1 2 ΕΠΙΛΕΞΤΕ όνομα, (zarplata+ premia) AS zarplata_premia ΑΠΟ δασκάλους;

ΕΠΙΛΕΞΤΕ όνομα, (zarplata+premia) AS zarplata_premia ΑΠΟ δασκάλους;

Αποτέλεσμα:

Συγκεντρωτικές συναρτήσεις σε SQL

Για τη λήψη συνολικών τιμών και την αξιολόγηση παραστάσεων, χρησιμοποιούνται συγκεντρωτικές συναρτήσεις στο sql:

Όλες οι συγκεντρωτικές συναρτήσεις επιστρέφουν μια ενιαία τιμή.

Οι συναρτήσεις COUNT, MIN και MAX ισχύουν για οποιονδήποτε τύπο δεδομένων.

Οι συναρτήσεις SUM και AVG χρησιμοποιούνται μόνο για αριθμητικά πεδία.
Υπάρχει διαφορά μεταξύ των συναρτήσεων COUNT(*) και COUNT(): η δεύτερη δεν λαμβάνει υπόψη τις τιμές NULL κατά τον υπολογισμό.

Σπουδαίος:Όταν εργάζεστε με συγκεντρωτικές συναρτήσεις σε SQL, χρησιμοποιείται μια λέξη συνάρτησης ΩΣ


Παράδειγμα βάσης δεδομένων «Ινστιτούτο»:Λάβετε την αξία του υψηλότερου μισθού μεταξύ των δασκάλων, εμφανίστε το αποτέλεσμα ως "max_sary"


✍ Λύση:
SELECT MAX (zarplata) AS max_salary ΑΠΟ καθηγητές;

SELECT MAX(zarplata) AS max_salary ΑΠΟ καθηγητές;

Αποτελέσματα:

Ας δούμε ένα πιο περίπλοκο παράδειγμα χρήσης συγκεντρωτικών συναρτήσεων στην sql.


✍ Λύση:

GROUP BY ρήτρα στην SQL

Η ομάδα ανά τελεστή στο sql χρησιμοποιείται συνήθως σε συνδυασμό με συναρτήσεις συγκεντρωτικών στοιχείων.

Οι συγκεντρωτικές συναρτήσεις εκτελούνται σε όλες τις σειρές ερωτημάτων που προκύπτουν. Εάν το ερώτημα περιέχει έναν όρο GROUP BY, κάθε σύνολο σειρών που καθορίζεται στον όρο GROUP BY αποτελεί μια ομάδα και οι συναρτήσεις συγκεντρωτικών εκτελούνται για κάθε ομάδα ξεχωριστά.

Ας δούμε ένα παράδειγμα με τον πίνακα μαθημάτων:

Παράδειγμα:

Σπουδαίος:Έτσι, χρησιμοποιώντας GROUP BY, όλες οι σειρές εξόδου ερωτήματος χωρίζονται σε ομάδες που χαρακτηρίζονται από τους ίδιους συνδυασμούς τιμών σε αυτές τις στήλες (δηλαδή, οι συναρτήσεις συγκεντρωτικών εκτελούνται σε κάθε ομάδα ξεχωριστά).

Αξίζει να ληφθεί υπόψη ότι κατά την ομαδοποίηση με ένα πεδίο που περιέχει τιμές NULL, όλες αυτές οι εγγραφές θα εμπίπτουν σε μία ομάδα.

Για διαφορετικούς τύπους εκτυπωτών, προσδιορίστε το μέσο κόστος και την ποσότητα τους (δηλαδή, ξεχωριστά για λέιζερ, inkjet και matrix). Χρησιμοποιήστε αθροιστικές συναρτήσεις. Το αποτέλεσμα πρέπει να μοιάζει με αυτό:

Έχοντας δήλωση SQL

Η ρήτρα HAVING στην SQL είναι απαραίτητη για τον έλεγχο των τιμών, που λαμβάνονται χρησιμοποιώντας τη συνάρτηση συγκεντρωτικών μετά την ομαδοποίηση(μετά τη χρήση GROUP BY). Τέτοιος έλεγχος δεν μπορεί να περιέχεται σε μια ρήτρα WHERE.

Παράδειγμα: Κατάστημα ηλεκτρονικών υπολογιστών DB. Υπολογίστε τη μέση τιμή των υπολογιστών με την ίδια ταχύτητα επεξεργαστή. Εκτελέστε υπολογισμούς μόνο για εκείνες τις ομάδες των οποίων η μέση τιμή είναι μικρότερη από 30.000.



  • Συγκεντρωτικές συναρτήσειςχρησιμοποιούνται παρόμοια με τα ονόματα πεδίων σε μια πρόταση SELECT, με μία εξαίρεση: λαμβάνουν το όνομα πεδίου ως όρισμα. Με λειτουργίες ΠΟΣΟΚαι AVGΜπορούν να χρησιμοποιηθούν μόνο αριθμητικά πεδία. Με λειτουργίες COUNT, MAX και MINΜπορούν να χρησιμοποιηθούν τόσο αριθμητικά όσο και πεδία χαρακτήρων. Όταν χρησιμοποιείται με πεδία χαρακτήρων ΜΕΓΚαι MINθα τα μεταφράσει σε ισοδύναμο κώδικα ASCII και θα τα επεξεργαστεί με αλφαβητική σειρά. Ορισμένα DBMS επιτρέπουν τη χρήση ένθετων συγκεντρωτικών στοιχείων, αλλά αυτό αποτελεί απόκλιση από το πρότυπο ANSI με όλες τις επακόλουθες συνέπειες.


Για παράδειγμα, μπορείτε να υπολογίσετε τον αριθμό των μαθητών που έδωσαν εξετάσεις σε κάθε γνωστικό αντικείμενο. Για να το κάνετε αυτό, πρέπει να εκτελέσετε ένα ερώτημα ομαδοποιημένο σύμφωνα με το πεδίο "Discipline" και να εμφανίσετε ως αποτέλεσμα το όνομα του κλάδου και τον αριθμό των σειρών στην ομάδα για αυτόν τον κλάδο. Η χρήση του χαρακτήρα * ως όρισμα στη συνάρτηση COUNT σημαίνει μέτρηση όλων των σειρών της ομάδας.

ΕΠΙΛΟΓΗ R1. Πειθαρχία, COUNT(*)

GROUP BY R1.Discipline;

Αποτέλεσμα:


SELECT R1.Discipline, COUNT (*)

ΠΟΥ R1. Η αξιολόγηση ΔΕΝ ΕΙΝΑΙ ΜΗΧΑΝΗ

GROUP BY R1.Discipline;

Αποτέλεσμα:


δεν θα συμπεριληφθεί στο σύνολο των πλειάδων πριν από την ομαδοποίηση, επομένως ο αριθμός των πλειάδων στην ομάδα για τον κλάδο «Θεωρία πληροφοριών» θα είναι 1 λιγότερος.

Ένα παρόμοιο αποτέλεσμα μπορεί να ληφθεί εάν γράψετε το ερώτημα με τον ακόλουθο τρόπο:

ΕΠΙΛΟΓΗ R1. Πειθαρχία, COUNT (R1. Βαθμολογία)

ΟΜΑΔΑ ΑΠΟ R1. Πειθαρχία;

Λειτουργία COUNT (ΧΑΡΑΚΤΗΡΙΣΤΙΚΟ ΟΝΟΜΑ)μετράει τον αριθμό των συγκεκριμένων τιμών σε μια ομάδα, σε αντίθεση με μια συνάρτηση ΚΟΜΗΣ(*),που μετράει τον αριθμό των σειρών σε μια ομάδα. Πράγματι, σε μια ομάδα με τον κλάδο «Θεωρία πληροφοριών» θα υπάρχουν 4 γραμμές, αλλά μόνο 3 συγκεκριμένες τιμές για το χαρακτηριστικό «Αξιολόγηση».


Κανόνες χειρισμού τιμών NULL σε συγκεντρωτικές συναρτήσεις

Εάν κάποιες τιμές στη στήλη είναι ίσες ΑΚΥΡΟΣΚατά τον υπολογισμό του αποτελέσματος της συνάρτησης, εξαιρούνται.

Αν όλες οι τιμές σε μια στήλη είναι ίσες ΑΚΥΡΟΣ, Αυτό Μέγ. Ελάχ. Άθροισμα Μέσο = NULL καταμέτρηση = 0 (μηδέν).

Εάν ο πίνακας είναι άδειος, count(*) = 0 .

Μπορείτε επίσης να χρησιμοποιήσετε αθροιστικές συναρτήσεις χωρίς τη λειτουργία προ-ομαδοποίησης, στην οποία περίπτωση ολόκληρη η σχέση αντιμετωπίζεται ως μία ομάδα και μπορεί να υπολογιστεί μία τιμή ανά ομάδα για αυτήν την ομάδα.

Κανόνες ερμηνείας συγκεντρωτικών συναρτήσεων

Οι συγκεντρωτικές συναρτήσεις μπορούν να συμπεριληφθούν στη λίστα εξόδου και στη συνέχεια να εφαρμοστούν σε ολόκληρο τον πίνακα.

SELECT MAX (Αξιολόγηση) από το R1θα δώσει τη μέγιστη αξιολόγηση κατά τη διάρκεια της συνεδρίας.

ΕΠΙΛΕΞΤΕ ΣΥΝΟΛΟ (Βαθμολογία) από το R1θα δώσει το άθροισμα όλων των βαθμών για τη συνεδρία.

ΕΠΙΛΟΓΗ AVG(Βαθμολογία) από το R1θα δώσει μια μέση βαθμολογία για ολόκληρη τη συνεδρία.


2; Αποτέλεσμα: " width="640"

Γυρνώντας ξανά στη βάση δεδομένων «Συνεδρία» (πίνακας R1), βρίσκουμε τον αριθμό των εξετάσεων που πέρασαν επιτυχώς:

SELECT COUNT(*) As Παραδόθηκε _ εξετάσεις

WHERE Βαθμολογία 2;

Αποτέλεσμα:


Τα ορίσματα για τη συγκέντρωση συναρτήσεων μπορεί να είναι μεμονωμένες στήλες πίνακα. Για να υπολογίσετε, για παράδειγμα, τον αριθμό των διακριτών τιμών μιας συγκεκριμένης στήλης σε μια ομάδα, πρέπει να χρησιμοποιήσετε τη λέξη-κλειδί DISTINCT μαζί με το όνομα της στήλης. Ας υπολογίσουμε τον αριθμό των διαφορετικών βαθμών που ελήφθησαν σε κάθε γνωστικό αντικείμενο:

SELECT R1.Discipline, COUNT (DISTINCT R1.Evaluation)

ΠΟΥ R1. Η αξιολόγηση ΔΕΝ ΕΙΝΑΙ ΜΗΧΑΝΗ

GROUP BY R1.Discipline;

Αποτέλεσμα:


Το ίδιο αποτέλεσμα προκύπτει εάν εξαιρέσουμε τη ρητή συνθήκη στο τμήμα WHERE, οπότε το ερώτημα θα μοιάζει με αυτό:

ΕΠΙΛΟΓΗ R1. Πειθαρχία, COUNT (DISTINCT R1. Αξιολόγηση)

ΟΜΑΔΑ ΑΠΟ R1. Πειθαρχία;

Λειτουργία COUNT (DISTINCT R1.Evaluation)μετράει μόνο σίγουρο διάφοροςνοήματα.

Για να επιτευχθεί το επιθυμητό αποτέλεσμα σε αυτήν την περίπτωση, είναι απαραίτητο να γίνει ένας προκαταρκτικός μετασχηματισμός του τύπου δεδομένων της στήλης "Βαθμολογία", φέρνοντάς τον σε πραγματικό τύπο, τότε το αποτέλεσμα του υπολογισμού του μέσου όρου δεν θα είναι ακέραιος αριθμός. Σε αυτήν την περίπτωση, το αίτημα θα μοιάζει με αυτό:


2 Ομάδα κατά R2. Ομάδα, R1. Πειθαρχία; Εδώ, η συνάρτηση CAST() μετατρέπει τη στήλη Βαθμολογία σε έγκυρο τύπο δεδομένων. "width="640"

Επιλέξτε R2.Group, R1.Discipline,Count(*) ως Total, AVG(cast(Score as δεκαδικό(3,1))) ως Average_score

Από R1, R2

όπου R1. Πλήρες όνομα = R2. Πλήρες όνομα και R1. Η βαθμολογία δεν είναι μηδενική

και R1. Βαθμολογία 2

Ομάδα κατά R2. Ομάδα, R1. Πειθαρχία;

Εδώ είναι η λειτουργία ΕΚΜΑΓΕΙΟ()Μετατρέπει τη στήλη Βαθμολογία σε έγκυρο τύπο δεδομένων.


Δεν μπορείτε να χρησιμοποιήσετε συγκεντρωτικές συναρτήσεις σε μια ρήτρα WHERE επειδή οι συνθήκες σε αυτήν την ενότητα αξιολογούνται ως προς μια μεμονωμένη γραμμή και οι συναρτήσεις συγκεντρωτικών αξιολογούνται ως ομάδες σειρών.

Ο όρος GROUP BY σάς επιτρέπει να ορίσετε ένα υποσύνολο τιμών σε ένα συγκεκριμένο πεδίο από την άποψη ενός άλλου πεδίου και να εφαρμόσετε μια συγκεντρωτική συνάρτηση στο υποσύνολο. Αυτό καθιστά δυνατό τον συνδυασμό πεδίων και αθροιστικών συναρτήσεων σε έναν μόνο όρο SELECT. Οι συναρτήσεις συγκεντρωτικών μπορούν να χρησιμοποιηθούν τόσο στην έκφραση για την έξοδο των αποτελεσμάτων της γραμμής SELECT όσο και στην έκφραση για την συνθήκη για την επεξεργασία σχηματισμένων ομάδων HAVING. Σε αυτήν την περίπτωση, κάθε αθροιστική συνάρτηση υπολογίζεται για κάθε επιλεγμένη ομάδα. Οι τιμές που λαμβάνονται από τον υπολογισμό των αθροιστικών συναρτήσεων μπορούν να χρησιμοποιηθούν για την εμφάνιση των αντίστοιχων αποτελεσμάτων ή για την επιλογή των ομάδων.

Ας δημιουργήσουμε ένα ερώτημα που εμφανίζει ομάδες στις οποίες ελήφθησαν περισσότερες από μία κακές βαθμολογίες σε έναν κλάδο στις εξετάσεις:


1; Αποτέλεσμα: " width="640"

ΕΠΙΛΟΓΗ R2. Ομάδα

ΑΠΟ R1, R2

ΠΟΥ R1. Πλήρες όνομα = R2. Πλήρες όνομα ΚΑΙ

R1.Βαθμολογία = 2

GROUP BY R2.Group, R1.Discipline

ΕΧΟΝΤΑΣ μέτρηση(*) 1;

Αποτέλεσμα:


Έχουμε μια βάση δεδομένων «Τράπεζα», που αποτελείται από έναν πίνακα F, ο οποίος αποθηκεύει τη σχέση F που περιέχει πληροφορίες για λογαριασμούς σε υποκαταστήματα μιας συγκεκριμένης τράπεζας:

Βρείτε το συνολικό υπόλοιπο σε λογαριασμούς σε υποκαταστήματα. Μπορείτε να κάνετε ένα ξεχωριστό ερώτημα για καθένα από αυτά επιλέγοντας SUM (Remaining) από τον πίνακα για κάθε κλάδο, αλλά η λειτουργία GROUP BY θα σας επιτρέψει να τα βάλετε όλα σε μία εντολή:

ΕΠΙΛΕΓΩ Υποκατάστημα , SUM( Υπόλοιπο )

ΟΜΑΔΑ ΑΝΑ Υποκατάστημα;

ΟΜΑΔΑ ΑΠΟεφαρμόζει αθροιστικές συναρτήσεις ανεξάρτητα σε κάθε ομάδα που προσδιορίζεται από την τιμή του πεδίου Branch. Η ομάδα αποτελείται από σειρές με την ίδια τιμή πεδίου Branch και τη συνάρτηση ΠΟΣΟεφαρμόζεται χωριστά για κάθε τέτοια ομάδα, δηλαδή το συνολικό υπόλοιπο του λογαριασμού υπολογίζεται χωριστά για κάθε κλάδο. Η τιμή του πεδίου στο οποίο ισχύει ΟΜΑΔΑ ΑΠΟΤο , εξ ορισμού, έχει μόνο μία τιμή ανά ομάδα εξόδου, ακριβώς όπως το αποτέλεσμα μιας αθροιστικής συνάρτησης.


5.000; Τα επιχειρήματα σε μια πρόταση HAVING ακολουθούν τους ίδιους κανόνες όπως σε μια πρόταση SELECT που χρησιμοποιεί GROUP BY. Πρέπει να έχουν μία τιμή ανά ομάδα εξόδου. "width="640"

Ας υποθέσουμε ότι επιλέγουμε μόνο εκείνα τα υποκαταστήματα των οποίων τα συνολικά υπόλοιπα λογαριασμού υπερβαίνουν τα $5.000, καθώς και τα συνολικά υπόλοιπα για τα επιλεγμένα υποκαταστήματα. Για να εμφανίσετε αποτελέσματα για υποκαταστήματα με συνολικά υπόλοιπα άνω των 5.000 $, πρέπει να χρησιμοποιήσετε την ρήτρα HAVING. Η ρήτρα HAVING καθορίζει τα κριτήρια που χρησιμοποιούνται για την αφαίρεση ορισμένων ομάδων από την έξοδο, όπως ακριβώς κάνει η ρήτρα WHERE για μεμονωμένες σειρές.

Η σωστή εντολή θα ήταν:

SELECT Branch, SUM (Υπόλοιπο)

ΟΜΑΔΑ ΑΠΟ Υποκατάστημα

ΕΧΟΝΤΑΣ ΠΟΣΟ ( Υπόλοιπο ) 5 000;

Επιχειρήματα σε μια πρόταση ΕΧΟΝΤΑΣυπακούουν στους ίδιους κανόνες όπως στην πρόταση ΕΠΙΛΕΓΩόπου χρησιμοποιείται ΟΜΑΔΑ ΑΠΟ. Πρέπει να έχουν μία τιμή ανά ομάδα εξόδου.


Η ακόλουθη εντολή θα απαγορευτεί:

SELECT Branch,SUM(Υπόλοιπο)

ΟΜΑΔΑ ΑΝΑ Υποκατάστημα

HHAING Ημερομηνία Έναρξης = 27/12/2004 ;

Πεδίο Ημερομηνία Έναρξηςδεν μπορεί να χρησιμοποιηθεί σε πρόταση ΕΧΟΝΤΑΣ, γιατί μπορεί να έχει περισσότερες από μία τιμές ανά ομάδα εξόδου. Για να αποφευχθεί μια τέτοια κατάσταση, η πρόταση ΕΧΟΝΤΑΣθα πρέπει να αναφέρεται μόνο στα συγκεντρωτικά στοιχεία και τα επιλεγμένα πεδία ΟΜΑΔΑ ΑΠΟ. Υπάρχει ένας σωστός τρόπος για να κάνετε το παραπάνω ερώτημα:

SELECT Branch,SUM(Υπόλοιπο)

WHEREOpenDate = '27/12/2004'

ΟΜΑΔΑ ΑΝΑ Υποκατάστημα;


Η έννοια αυτού του ερωτήματος είναι η εξής: βρείτε το άθροισμα των υπολοίπων για κάθε κλάδο λογαριασμών που άνοιξε στις 27 Δεκεμβρίου 2004.

Όπως αναφέρθηκε προηγουμένως, το HAVING μπορεί να λάβει μόνο ορίσματα που έχουν μία τιμή ανά ομάδα εξόδου. Στην πράξη, οι αναφορές σε συναρτήσεις συγκεντρωτικών στοιχείων είναι οι πιο συνηθισμένες, αλλά τα πεδία που επιλέγονται με χρήση GROUP BY είναι επίσης έγκυρα. Για παράδειγμα, θέλουμε να δούμε τα συνολικά υπόλοιπα στους λογαριασμούς των υποκαταστημάτων στην Αγία Πετρούπολη, το Pskov και το Uryupinsk:

SELECT Branch, SUM (Υπόλοιπο)

ΑΠΟ F,Q

ΠΟΥ ΣΤ. Κλάδος = Π. Κλάδος

ΟΜΑΔΑ ΑΝΑ Υποκατάστημα

HAVING Branch IN («St. Petersburg», «Pskov», «Uryupinsk»);

100.000; Εάν το συνολικό υπόλοιπο είναι μεγαλύτερο από 100.000 $, τότε θα το δούμε στη σχέση που προκύπτει, διαφορετικά θα λάβουμε μια κενή σχέση. "width="640"

Επομένως, μόνο οι προδιαγραφές των στηλών που προσδιορίζονται ως ομαδοποιούμενες στήλες στην πρόταση GROUP BY μπορούν να χρησιμοποιηθούν απευθείας σε αριθμητικές εκφράσεις κατηγορήματος που περιλαμβάνονται στον όρο επιλογής του όρου HAVING. Οι υπόλοιπες στήλες μπορούν να καθοριστούν μόνο εντός των προδιαγραφών των συγκεντρωτικών συναρτήσεων COUNT, SUM, AVG, MIN και MAX, οι οποίες σε αυτήν την περίπτωση υπολογίζουν κάποια συγκεντρωτική τιμή για ολόκληρη την ομάδα σειρών. Το αποτέλεσμα της εκτέλεσης της ενότητας HAVING είναι ένας ομαδοποιημένος πίνακας που περιέχει μόνο εκείνες τις ομάδες σειρών για τις οποίες το αποτέλεσμα του υπολογισμού της συνθήκης επιλογής στην ενότητα HAVING είναι TRUE. Ειδικότερα, εάν υπάρχει όρος HAVING σε ένα ερώτημα που δεν περιέχει GROUP BY, τότε το αποτέλεσμα της εκτέλεσής του θα είναι είτε ένας κενός πίνακας είτε το αποτέλεσμα της εκτέλεσης των προηγούμενων ενοτήτων της παράστασης πίνακα, που αντιμετωπίζεται ως μια ενιαία ομάδα χωρίς ομαδοποίηση στηλών. Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι θέλουμε να εμφανίσουμε το συνολικό ποσό των υπολοίπων σε όλους τους κλάδους, αλλά μόνο εάν είναι πάνω από 100.000 $ Σε αυτήν την περίπτωση, το ερώτημά μας δεν θα περιέχει λειτουργίες ομαδοποίησης, αλλά θα περιέχει μια ενότητα HAVING και θα μοιάζει με αυτό:

ΕΠΙΛΟΓΗ ΑΠΟΣΟΛΟΥ( Υπόλοιπο )

ΕΧΟΝΤΑΣ ΠΟΣΟ( Υπόλοιπο ) 100 000;

Εάν το συνολικό υπόλοιπο είναι μεγαλύτερο από 100.000 $, τότε θα το δούμε στη σχέση που προκύπτει, διαφορετικά θα λάβουμε μια κενή σχέση.


Για να συνοψίσουμε τις πληροφορίες που περιέχονται στη βάση δεδομένων, η SQL παρέχει συγκεντρωτικές συναρτήσεις. Μια αθροιστική συνάρτηση παίρνει μια ολόκληρη στήλη δεδομένων ως όρισμα και επιστρέφει μια ενιαία τιμή που συνοψίζει αυτή τη στήλη με συγκεκριμένο τρόπο.

Για παράδειγμα, η αθροιστική συνάρτηση AVG() παίρνει μια στήλη αριθμών ως όρισμα και υπολογίζει τον μέσο όρο τους.

Για να υπολογίσετε το μέσο κατά κεφαλήν εισόδημα ενός κατοίκου του Ζελένογκραντ, χρειάζεστε το ακόλουθο ερώτημα:

ΕΠΙΛΕΞΤΕ «ΜΕΣΟ ΚΑΤΑ ΚΕΦΑΛΑΙΟ ΕΙΣΟΔΗΜΑ=», AVG(SUMD)

Η SQL έχει έξι συγκεντρωτικές συναρτήσεις που παρέχουν διαφορετικούς τύπους συνοπτικών πληροφοριών (Εικόνα 1):

– Το SUM() υπολογίζει το άθροισμα όλων των τιμών που περιέχονται σε μια στήλη.

– Η AVG() υπολογίζει τον μέσο όρο των τιμών που περιέχονται στη στήλη.

– Το MIN() βρίσκει τη μικρότερη από όλες τις τιμές που περιέχονται στη στήλη.

– Η MAX() βρίσκει τη μεγαλύτερη από όλες τις τιμές που περιέχονται στη στήλη.

– Η COUNT() μετρά τον αριθμό των τιμών που περιέχονται σε μια στήλη.

– Το COUNT(*) μετράει τον αριθμό των σειρών στον πίνακα αποτελεσμάτων ερωτήματος.

Το όρισμα σε μια συγκεντρωτική συνάρτηση μπορεί να είναι ένα απλό όνομα στήλης, όπως στο προηγούμενο παράδειγμα, ή μια έκφραση, όπως στο ακόλουθο ερώτημα, το οποίο καθορίζει τον υπολογισμό του μέσου κατά κεφαλήν φόρου:

ΕΠΙΛΟΓΗ AVG(SUMD*0.13)

Αυτό το ερώτημα δημιουργεί μια προσωρινή στήλη που περιέχει τις τιμές (SUMD*0,13) για κάθε γραμμή του πίνακα PERSON και στη συνέχεια υπολογίζει τον μέσο όρο της προσωρινής στήλης.

Το ποσό του εισοδήματος για όλους τους κατοίκους του Zelenograd μπορεί να υπολογιστεί χρησιμοποιώντας τη συγκεντρωτική συνάρτηση SUM:

ΕΠΙΛΕΞΤΕ ΠΟΣΟ (SUMD) ΑΠΟ ΑΤΟΜΟ

Μια αθροιστική συνάρτηση μπορεί επίσης να χρησιμοποιηθεί για τον υπολογισμό των συνόλων από έναν πίνακα αποτελεσμάτων που λαμβάνεται με τη σύνδεση πολλών πινάκων προέλευσης. Για παράδειγμα, μπορείτε να υπολογίσετε το συνολικό ποσό εισοδήματος που έλαβαν οι κάτοικοι από μια πηγή που ονομάζεται «Υποτροφία»:

ΕΠΙΛΕΞΤΕ ΠΟΣΟ (ΧΡΗΜΑΤΑ)

ΑΠΟ ΤΟ ΚΕΡΔΟΣ, ΕΧΟΥΝ_Δ

WHERE PROFIT.ID=HAVE_D.ID

AND PROFIT.SOURCE='Scholarship'

Οι συγκεντρωτικές συναρτήσεις MIN() και MAX() σάς επιτρέπουν να βρείτε τις μικρότερες και μεγαλύτερες τιμές σε έναν πίνακα, αντίστοιχα. Η στήλη μπορεί να περιέχει αριθμητικές τιμές ή τιμές συμβολοσειρών ή τιμές ημερομηνίας ή ώρας.

Για παράδειγμα, μπορείτε να ορίσετε:

(α) το χαμηλότερο συνολικό εισόδημα που λαμβάνουν οι κάτοικοι και τον υψηλότερο πληρωτέο φόρο:

ΕΠΙΛΕΞΤΕ MIN(SUMD), MAX(SUMD*0,13)

β) ημερομηνίες γέννησης του μεγαλύτερου και του νεότερου κατοίκου:

ΕΠΙΛΟΓΗ ΕΛΑΧΙΣΤΟΥ (ΗΜ.), ΜΕΓΙΣΤΟΥ (ΗΜ.)

(γ) τα επώνυμα, τα ονόματα και τα πατρώνυμα των πρώτων και τελευταίων κατοίκων του καταλόγου, με αλφαβητική σειρά:

ΕΠΙΛΟΓΗ MIN(FIO), MAX(FIO)

Όταν χρησιμοποιείτε αυτές τις συγκεντρωτικές συναρτήσεις, πρέπει να θυμάστε ότι τα αριθμητικά δεδομένα συγκρίνονται χρησιμοποιώντας αριθμητικούς κανόνες, οι ημερομηνίες συγκρίνονται διαδοχικά (οι προηγούμενες τιμές ημερομηνίας θεωρούνται μικρότερες από τις μεταγενέστερες) και τα χρονικά διαστήματα συγκρίνονται με βάση τη διάρκειά τους.

Όταν χρησιμοποιείτε τις συναρτήσεις MIN() και MAX() με δεδομένα συμβολοσειρών, το αποτέλεσμα της σύγκρισης δύο συμβολοσειρών εξαρτάται από τον πίνακα κωδικοποίησης χαρακτήρων που χρησιμοποιείται.

Η αθροιστική συνάρτηση COUNT() μετράει τον αριθμό των τιμών σε μια στήλη οποιουδήποτε τύπου:

(α) πόσα διαμερίσματα υπάρχουν στην 1η μικροπεριφέρεια;

SELECT COUNT(ADR) FROM FLAT WHERE ADR LIKE "%, 1_ _-%"

(β) πόσοι κάτοικοι έχουν πηγές εισοδήματος;

ΕΠΙΛΕΞΤΕ ΑΡΙΘΜΟ (ΔΙΑΚΡΙΤΙΚΟ ΝΟΜ) ΑΠΟ ΤΟ HAVE_D

(γ) πόσες πηγές εισοδήματος χρησιμοποιούνται από τους κατοίκους;

SELECT COUNT(DISTINCT ID) FROM HAVE_D (Η λέξη-κλειδί DISTINCT προσδιορίζει ότι καταμετρώνται οι μη διπλότυπες τιμές στη στήλη).

Η ειδική αθροιστική συνάρτηση COUNT(*) μετράει τις σειρές στον πίνακα αποτελεσμάτων και όχι τις τιμές δεδομένων:

(α) πόσα διαμερίσματα υπάρχουν στη 2η μικροπεριφέρεια;

SELECT COUNT(*) FROM FLAT WHERE ADR LIKE "%, 2__-%"

(β) πόσες πηγές εισοδήματος έχει ο Ιβάν Ιβάνοβιτς Ιβάνοφ;

SELECT COUNT(*) FROM PERSON, HAVE_D WHERE FIO="Ivanov Ivan Ivanovich" AND PERSON.NOM=HAVE_D.NOM

(γ) πόσοι κάτοικοι μένουν σε ένα διαμέρισμα σε μια συγκεκριμένη διεύθυνση;

SELECT COUNT(*) FROM PERSON WHERE ADR="Zelenograd, 1001-45"

Ένας τρόπος για να κατανοήσουμε πώς εκτελούνται τα ερωτήματα σύνοψης με συγκεντρωτικές συναρτήσεις είναι να σκεφτούμε ότι η εκτέλεση του ερωτήματος είναι χωρισμένη σε δύο μέρη. Αρχικά, προσδιορίζουμε πώς θα λειτουργούσε το ερώτημα χωρίς συγκεντρωτικές συναρτήσεις, επιστρέφοντας πολλές σειρές αποτελεσμάτων. Στη συνέχεια, οι συγκεντρωτικές συναρτήσεις εφαρμόζονται στα αποτελέσματα του ερωτήματος, επιστρέφοντας μία μόνο σειρά που προκύπτει.

Για παράδειγμα, εξετάστε το ακόλουθο σύνθετο ερώτημα: βρείτε το μέσο κατά κεφαλήν συνολικό εισόδημα, το άθροισμα του συνολικού εισοδήματος των κατοίκων και τη μέση απόδοση της πηγής ως ποσοστό του συνολικού εισοδήματος του κατοίκου. Ο χειριστής δίνει την απάντηση

ΕΠΙΛΕΞΤΕ AVG(SUMD), SUM(SUMD), (100*AVG(MONEY/SUMD)) FROM PERSON, PROFIT, HAVE_D WHERE PERSON.NOM=HAVE_D.NOM AND HAVE_D.ID=PROFIT.ID

Χωρίς συγκεντρωτικές συναρτήσεις, το ερώτημα θα μοιάζει με αυτό:

ΕΠΙΛΕΞΤΕ SUMD, SUMD, MONEY/SUMD FROM PERSON, PROFIT, HAVE_D WHERE PERSON.NOM=HAVE_D.NOM ΚΑΙ HAVE_D.ID=PROFIT.ID

και θα επέστρεφε μία σειρά αποτελεσμάτων για κάθε κάτοικο και συγκεκριμένη πηγή εισοδήματος. Οι συγκεντρωτικές συναρτήσεις χρησιμοποιούν τις στήλες του πίνακα αποτελεσμάτων του ερωτήματος για να δημιουργήσουν έναν πίνακα μίας σειράς με τα συνοπτικά αποτελέσματα.

Μπορείτε να καθορίσετε μια αθροιστική συνάρτηση στη γραμμή στήλης που επιστρέφεται αντί για οποιοδήποτε όνομα στήλης. Για παράδειγμα, μπορεί να είναι μέρος μιας παράστασης που προσθέτει ή αφαιρεί τις τιμές δύο συγκεντρωτικών συναρτήσεων:

ΕΠΙΛΕΞΤΕ ΜΕΓΙΣΤΟ(SUMD)-MIN(SUMD) ΑΠΟ ΑΤΟΜΟ

Ωστόσο, μια συγκεντρωτική συνάρτηση δεν μπορεί να είναι όρισμα σε μια άλλη συγκεντρωτική συνάρτηση, δηλ. Οι ένθετες αθροιστικές συναρτήσεις απαγορεύονται.

Επίσης, η λίστα των στηλών που επιστρέφονται δεν μπορεί να χρησιμοποιεί συγκεντρωτικές συναρτήσεις και κανονικά ονόματα στηλών ταυτόχρονα, καθώς αυτό δεν έχει νόημα, για παράδειγμα:

ΕΠΙΛΕΞΤΕ FIO, SUM(SUMD) ΑΠΟ ΑΤΟΜΟ

Εδώ, το πρώτο στοιχείο της λίστας δίνει εντολή στο DBMS να δημιουργήσει έναν πίνακα που θα αποτελείται από πολλές σειρές και θα περιέχει μία γραμμή για κάθε κάτοικο. Το δεύτερο στοιχείο της λίστας ζητά από το DBMS να λάβει μια ενιαία τιμή αποτελέσματος, η οποία είναι το άθροισμα των τιμών στη στήλη SUMD. Αυτές οι δύο οδηγίες έρχονται σε αντίθεση μεταξύ τους, με αποτέλεσμα ένα λάθος.

Τα παραπάνω δεν ισχύουν για τις περιπτώσεις επεξεργασίας υποερωτημάτων και ερωτημάτων με ομαδοποίηση.



Συνιστούμε να διαβάσετε

Κορυφή