λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> SQL Server

Ποια είναι η διαφορά μεταξύ του πού και της ύπαρξης ρήτρες SQL;

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

όπου ρήτρα

* Σκοπός: Φίλτρα σειρές Πριν Οποιεσδήποτε πράξεις συσσωμάτωσης (όπως «sum», `avg`,` count »κλπ.).

* ισχύει για: Μεμονωμένες σειρές.

* συνθήκες: Συνήθως περιλαμβάνουν συγκρίσεις και λογικούς χειριστές που λειτουργούν σε μεμονωμένες στήλες εντός του πίνακα.

* Παράδειγμα:

`` sql

Επιλέξτε * από πελάτες όπου χώρα ='USA';

`` `

Αυτό το ερώτημα ανακτά όλους τους πελάτες από τον πίνακα «Πελάτες» όπου η στήλη «χώρα» ισούται με τις ΗΠΑ.

έχοντας ρήτρα

* Σκοπός: Φίλτρα σειρές μετά από Επιχειρήσεις συσσωμάτωσης.

* ισχύει για: Τα αποτελέσματα της συσσωμάτωσης (ομάδα από).

* συνθήκες: Συνήθως περιλαμβάνουν συγκρίσεις συγκεντρωτικών τιμών χρησιμοποιώντας συνολικές λειτουργίες (π.χ., `SUM (PRICE)`, `avg (ηλικία)`, `count (*)`) σε συνδυασμό με λογικούς χειριστές.

* Παράδειγμα:

`` sql

Επιλέξτε City, AVG (ηλικία) ως eerement_age

Από πελάτες

Ομάδα ανά πόλη

Έχοντας το μέσο όρο> 30;

`` `

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

Βασικές διαφορές με λίγα λόγια:

* χρονισμός: «Όπου 'φίλτρα πριν από τη συσσωμάτωση,« έχοντας «φίλτρα μετά.

* Πεδίο εφαρμογής: "Όπου" εργάζεται σε μεμονωμένες σειρές, "έχοντας έργα σε συγκεντρωτικά αποτελέσματα.

* συνθήκες: "Όπου" χρησιμοποιεί τις συνθήκες σε μεμονωμένες στήλες, "έχει" χρησιμοποιεί συνθήκες σε συγκεντρωτικές τιμές.

Πότε να χρησιμοποιήσετε κάθε ρήτρα:

* Χρησιμοποιήστε το `όπου 'όταν θέλετε να φιλτράρετε τα δεδομένα με βάση τις μεμονωμένες τιμές σειράς πριν από οποιαδήποτε συσσωμάτωση.

* Χρησιμοποιήστε το `έχοντας όταν θέλετε να φιλτράρετε τα συγκεντρωτικά αποτελέσματα (όπως τα ομαδοποιημένα δεδομένα) με βάση τις συνθήκες που περιλαμβάνουν συγκεντρωτικές τιμές.

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

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα